
/* !!! This is code generated by Prisma. Do not edit directly. !!! */
/* eslint-disable */
// biome-ignore-all lint: generated file
// @ts-nocheck 
/*
 * WARNING: This is an internal file that is subject to change!
 *
 * 🛑 Under no circumstances should you import this file directly! 🛑
 *
 * All exports from this file are wrapped under a `Prisma` namespace object in the client.ts file.
 * While this enables partial backward compatibility, it is not part of the stable public API.
 *
 * If you are looking for your Models, Enums, and Input Types, please import them from the respective
 * model files in the `model` directory!
 */

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

export type * from '../models'

export type DMMF = typeof runtime.DMMF

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

/**
 * Prisma Errors
 */

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

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

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

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

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

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



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

export type DecimalJsLike = runtime.DecimalJsLike

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

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

/**
 * Prisma Client JS version: 6.19.0
 * Query Engine version: 2ba551f319ab1df4bc874a89965d8b3641056773
 */
export const prismaVersion: PrismaVersion = {
  client: "6.19.0",
  engine: "2ba551f319ab1df4bc874a89965d8b3641056773"
}

/**
 * Utility Types
 */

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


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


type SelectAndInclude = {
  select: any
  include: any
}

type SelectAndOmit = {
  select: any
  omit: any
}

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

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

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

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

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

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

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


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


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

/**
 * From ts-toolbelt
 */

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

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

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

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

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

export type Union = any

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

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

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

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

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

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

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

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

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

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

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

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

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

export type Boolean = True | False

export type True = 1

export type False = 0

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

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

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

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

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

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

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

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

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

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

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


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

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


export const ModelName = {
  Department: 'Department',
  User: 'User',
  Task: 'Task',
  TaskDepartment: 'TaskDepartment',
  TaskMember: 'TaskMember',
  Attachment: 'Attachment',
  Comment: 'Comment',
  TaskStatusHistory: 'TaskStatusHistory',
  MonitorPlan: 'MonitorPlan',
  MonitorItem: 'MonitorItem',
  MonitorItemUser: 'MonitorItemUser',
  MonitorRule: 'MonitorRule',
  MonitorInstance: 'MonitorInstance',
  MonitorNotifyLog: 'MonitorNotifyLog',
  MonitorOperateLog: 'MonitorOperateLog'
} as const

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



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

export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs, GlobalOmitOptions = {}> = {
  globalOmitOptions: {
    omit: GlobalOmitOptions
  }
  meta: {
    modelProps: "department" | "user" | "task" | "taskDepartment" | "taskMember" | "attachment" | "comment" | "taskStatusHistory" | "monitorPlan" | "monitorItem" | "monitorItemUser" | "monitorRule" | "monitorInstance" | "monitorNotifyLog" | "monitorOperateLog"
    txIsolationLevel: TransactionIsolationLevel
  }
  model: {
    Department: {
      payload: Prisma.$DepartmentPayload<ExtArgs>
      fields: Prisma.DepartmentFieldRefs
      operations: {
        findUnique: {
          args: Prisma.DepartmentFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$DepartmentPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.DepartmentFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$DepartmentPayload>
        }
        findFirst: {
          args: Prisma.DepartmentFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$DepartmentPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.DepartmentFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$DepartmentPayload>
        }
        findMany: {
          args: Prisma.DepartmentFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$DepartmentPayload>[]
        }
        create: {
          args: Prisma.DepartmentCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$DepartmentPayload>
        }
        createMany: {
          args: Prisma.DepartmentCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.DepartmentCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$DepartmentPayload>[]
        }
        delete: {
          args: Prisma.DepartmentDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$DepartmentPayload>
        }
        update: {
          args: Prisma.DepartmentUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$DepartmentPayload>
        }
        deleteMany: {
          args: Prisma.DepartmentDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.DepartmentUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.DepartmentUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$DepartmentPayload>[]
        }
        upsert: {
          args: Prisma.DepartmentUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$DepartmentPayload>
        }
        aggregate: {
          args: Prisma.DepartmentAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateDepartment>
        }
        groupBy: {
          args: Prisma.DepartmentGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.DepartmentGroupByOutputType>[]
        }
        count: {
          args: Prisma.DepartmentCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.DepartmentCountAggregateOutputType> | number
        }
      }
    }
    User: {
      payload: Prisma.$UserPayload<ExtArgs>
      fields: Prisma.UserFieldRefs
      operations: {
        findUnique: {
          args: Prisma.UserFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$UserPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.UserFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$UserPayload>
        }
        findFirst: {
          args: Prisma.UserFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$UserPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.UserFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$UserPayload>
        }
        findMany: {
          args: Prisma.UserFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$UserPayload>[]
        }
        create: {
          args: Prisma.UserCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$UserPayload>
        }
        createMany: {
          args: Prisma.UserCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.UserCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$UserPayload>[]
        }
        delete: {
          args: Prisma.UserDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$UserPayload>
        }
        update: {
          args: Prisma.UserUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$UserPayload>
        }
        deleteMany: {
          args: Prisma.UserDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.UserUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.UserUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$UserPayload>[]
        }
        upsert: {
          args: Prisma.UserUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$UserPayload>
        }
        aggregate: {
          args: Prisma.UserAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateUser>
        }
        groupBy: {
          args: Prisma.UserGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.UserGroupByOutputType>[]
        }
        count: {
          args: Prisma.UserCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.UserCountAggregateOutputType> | number
        }
      }
    }
    Task: {
      payload: Prisma.$TaskPayload<ExtArgs>
      fields: Prisma.TaskFieldRefs
      operations: {
        findUnique: {
          args: Prisma.TaskFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TaskPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.TaskFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TaskPayload>
        }
        findFirst: {
          args: Prisma.TaskFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TaskPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.TaskFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TaskPayload>
        }
        findMany: {
          args: Prisma.TaskFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TaskPayload>[]
        }
        create: {
          args: Prisma.TaskCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TaskPayload>
        }
        createMany: {
          args: Prisma.TaskCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.TaskCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TaskPayload>[]
        }
        delete: {
          args: Prisma.TaskDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TaskPayload>
        }
        update: {
          args: Prisma.TaskUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TaskPayload>
        }
        deleteMany: {
          args: Prisma.TaskDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.TaskUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.TaskUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TaskPayload>[]
        }
        upsert: {
          args: Prisma.TaskUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TaskPayload>
        }
        aggregate: {
          args: Prisma.TaskAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateTask>
        }
        groupBy: {
          args: Prisma.TaskGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.TaskGroupByOutputType>[]
        }
        count: {
          args: Prisma.TaskCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.TaskCountAggregateOutputType> | number
        }
      }
    }
    TaskDepartment: {
      payload: Prisma.$TaskDepartmentPayload<ExtArgs>
      fields: Prisma.TaskDepartmentFieldRefs
      operations: {
        findUnique: {
          args: Prisma.TaskDepartmentFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TaskDepartmentPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.TaskDepartmentFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TaskDepartmentPayload>
        }
        findFirst: {
          args: Prisma.TaskDepartmentFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TaskDepartmentPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.TaskDepartmentFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TaskDepartmentPayload>
        }
        findMany: {
          args: Prisma.TaskDepartmentFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TaskDepartmentPayload>[]
        }
        create: {
          args: Prisma.TaskDepartmentCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TaskDepartmentPayload>
        }
        createMany: {
          args: Prisma.TaskDepartmentCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.TaskDepartmentCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TaskDepartmentPayload>[]
        }
        delete: {
          args: Prisma.TaskDepartmentDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TaskDepartmentPayload>
        }
        update: {
          args: Prisma.TaskDepartmentUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TaskDepartmentPayload>
        }
        deleteMany: {
          args: Prisma.TaskDepartmentDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.TaskDepartmentUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.TaskDepartmentUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TaskDepartmentPayload>[]
        }
        upsert: {
          args: Prisma.TaskDepartmentUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TaskDepartmentPayload>
        }
        aggregate: {
          args: Prisma.TaskDepartmentAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateTaskDepartment>
        }
        groupBy: {
          args: Prisma.TaskDepartmentGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.TaskDepartmentGroupByOutputType>[]
        }
        count: {
          args: Prisma.TaskDepartmentCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.TaskDepartmentCountAggregateOutputType> | number
        }
      }
    }
    TaskMember: {
      payload: Prisma.$TaskMemberPayload<ExtArgs>
      fields: Prisma.TaskMemberFieldRefs
      operations: {
        findUnique: {
          args: Prisma.TaskMemberFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TaskMemberPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.TaskMemberFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TaskMemberPayload>
        }
        findFirst: {
          args: Prisma.TaskMemberFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TaskMemberPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.TaskMemberFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TaskMemberPayload>
        }
        findMany: {
          args: Prisma.TaskMemberFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TaskMemberPayload>[]
        }
        create: {
          args: Prisma.TaskMemberCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TaskMemberPayload>
        }
        createMany: {
          args: Prisma.TaskMemberCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.TaskMemberCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TaskMemberPayload>[]
        }
        delete: {
          args: Prisma.TaskMemberDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TaskMemberPayload>
        }
        update: {
          args: Prisma.TaskMemberUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TaskMemberPayload>
        }
        deleteMany: {
          args: Prisma.TaskMemberDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.TaskMemberUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.TaskMemberUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TaskMemberPayload>[]
        }
        upsert: {
          args: Prisma.TaskMemberUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TaskMemberPayload>
        }
        aggregate: {
          args: Prisma.TaskMemberAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateTaskMember>
        }
        groupBy: {
          args: Prisma.TaskMemberGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.TaskMemberGroupByOutputType>[]
        }
        count: {
          args: Prisma.TaskMemberCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.TaskMemberCountAggregateOutputType> | number
        }
      }
    }
    Attachment: {
      payload: Prisma.$AttachmentPayload<ExtArgs>
      fields: Prisma.AttachmentFieldRefs
      operations: {
        findUnique: {
          args: Prisma.AttachmentFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$AttachmentPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.AttachmentFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$AttachmentPayload>
        }
        findFirst: {
          args: Prisma.AttachmentFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$AttachmentPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.AttachmentFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$AttachmentPayload>
        }
        findMany: {
          args: Prisma.AttachmentFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$AttachmentPayload>[]
        }
        create: {
          args: Prisma.AttachmentCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$AttachmentPayload>
        }
        createMany: {
          args: Prisma.AttachmentCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.AttachmentCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$AttachmentPayload>[]
        }
        delete: {
          args: Prisma.AttachmentDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$AttachmentPayload>
        }
        update: {
          args: Prisma.AttachmentUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$AttachmentPayload>
        }
        deleteMany: {
          args: Prisma.AttachmentDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.AttachmentUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.AttachmentUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$AttachmentPayload>[]
        }
        upsert: {
          args: Prisma.AttachmentUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$AttachmentPayload>
        }
        aggregate: {
          args: Prisma.AttachmentAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateAttachment>
        }
        groupBy: {
          args: Prisma.AttachmentGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AttachmentGroupByOutputType>[]
        }
        count: {
          args: Prisma.AttachmentCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AttachmentCountAggregateOutputType> | number
        }
      }
    }
    Comment: {
      payload: Prisma.$CommentPayload<ExtArgs>
      fields: Prisma.CommentFieldRefs
      operations: {
        findUnique: {
          args: Prisma.CommentFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CommentPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.CommentFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CommentPayload>
        }
        findFirst: {
          args: Prisma.CommentFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CommentPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.CommentFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CommentPayload>
        }
        findMany: {
          args: Prisma.CommentFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CommentPayload>[]
        }
        create: {
          args: Prisma.CommentCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CommentPayload>
        }
        createMany: {
          args: Prisma.CommentCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.CommentCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CommentPayload>[]
        }
        delete: {
          args: Prisma.CommentDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CommentPayload>
        }
        update: {
          args: Prisma.CommentUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CommentPayload>
        }
        deleteMany: {
          args: Prisma.CommentDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.CommentUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.CommentUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CommentPayload>[]
        }
        upsert: {
          args: Prisma.CommentUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$CommentPayload>
        }
        aggregate: {
          args: Prisma.CommentAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateComment>
        }
        groupBy: {
          args: Prisma.CommentGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.CommentGroupByOutputType>[]
        }
        count: {
          args: Prisma.CommentCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.CommentCountAggregateOutputType> | number
        }
      }
    }
    TaskStatusHistory: {
      payload: Prisma.$TaskStatusHistoryPayload<ExtArgs>
      fields: Prisma.TaskStatusHistoryFieldRefs
      operations: {
        findUnique: {
          args: Prisma.TaskStatusHistoryFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TaskStatusHistoryPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.TaskStatusHistoryFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TaskStatusHistoryPayload>
        }
        findFirst: {
          args: Prisma.TaskStatusHistoryFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TaskStatusHistoryPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.TaskStatusHistoryFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TaskStatusHistoryPayload>
        }
        findMany: {
          args: Prisma.TaskStatusHistoryFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TaskStatusHistoryPayload>[]
        }
        create: {
          args: Prisma.TaskStatusHistoryCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TaskStatusHistoryPayload>
        }
        createMany: {
          args: Prisma.TaskStatusHistoryCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.TaskStatusHistoryCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TaskStatusHistoryPayload>[]
        }
        delete: {
          args: Prisma.TaskStatusHistoryDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TaskStatusHistoryPayload>
        }
        update: {
          args: Prisma.TaskStatusHistoryUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TaskStatusHistoryPayload>
        }
        deleteMany: {
          args: Prisma.TaskStatusHistoryDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.TaskStatusHistoryUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.TaskStatusHistoryUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TaskStatusHistoryPayload>[]
        }
        upsert: {
          args: Prisma.TaskStatusHistoryUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TaskStatusHistoryPayload>
        }
        aggregate: {
          args: Prisma.TaskStatusHistoryAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateTaskStatusHistory>
        }
        groupBy: {
          args: Prisma.TaskStatusHistoryGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.TaskStatusHistoryGroupByOutputType>[]
        }
        count: {
          args: Prisma.TaskStatusHistoryCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.TaskStatusHistoryCountAggregateOutputType> | number
        }
      }
    }
    MonitorPlan: {
      payload: Prisma.$MonitorPlanPayload<ExtArgs>
      fields: Prisma.MonitorPlanFieldRefs
      operations: {
        findUnique: {
          args: Prisma.MonitorPlanFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorPlanPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.MonitorPlanFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorPlanPayload>
        }
        findFirst: {
          args: Prisma.MonitorPlanFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorPlanPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.MonitorPlanFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorPlanPayload>
        }
        findMany: {
          args: Prisma.MonitorPlanFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorPlanPayload>[]
        }
        create: {
          args: Prisma.MonitorPlanCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorPlanPayload>
        }
        createMany: {
          args: Prisma.MonitorPlanCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.MonitorPlanCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorPlanPayload>[]
        }
        delete: {
          args: Prisma.MonitorPlanDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorPlanPayload>
        }
        update: {
          args: Prisma.MonitorPlanUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorPlanPayload>
        }
        deleteMany: {
          args: Prisma.MonitorPlanDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.MonitorPlanUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.MonitorPlanUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorPlanPayload>[]
        }
        upsert: {
          args: Prisma.MonitorPlanUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorPlanPayload>
        }
        aggregate: {
          args: Prisma.MonitorPlanAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateMonitorPlan>
        }
        groupBy: {
          args: Prisma.MonitorPlanGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.MonitorPlanGroupByOutputType>[]
        }
        count: {
          args: Prisma.MonitorPlanCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.MonitorPlanCountAggregateOutputType> | number
        }
      }
    }
    MonitorItem: {
      payload: Prisma.$MonitorItemPayload<ExtArgs>
      fields: Prisma.MonitorItemFieldRefs
      operations: {
        findUnique: {
          args: Prisma.MonitorItemFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorItemPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.MonitorItemFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorItemPayload>
        }
        findFirst: {
          args: Prisma.MonitorItemFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorItemPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.MonitorItemFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorItemPayload>
        }
        findMany: {
          args: Prisma.MonitorItemFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorItemPayload>[]
        }
        create: {
          args: Prisma.MonitorItemCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorItemPayload>
        }
        createMany: {
          args: Prisma.MonitorItemCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.MonitorItemCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorItemPayload>[]
        }
        delete: {
          args: Prisma.MonitorItemDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorItemPayload>
        }
        update: {
          args: Prisma.MonitorItemUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorItemPayload>
        }
        deleteMany: {
          args: Prisma.MonitorItemDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.MonitorItemUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.MonitorItemUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorItemPayload>[]
        }
        upsert: {
          args: Prisma.MonitorItemUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorItemPayload>
        }
        aggregate: {
          args: Prisma.MonitorItemAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateMonitorItem>
        }
        groupBy: {
          args: Prisma.MonitorItemGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.MonitorItemGroupByOutputType>[]
        }
        count: {
          args: Prisma.MonitorItemCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.MonitorItemCountAggregateOutputType> | number
        }
      }
    }
    MonitorItemUser: {
      payload: Prisma.$MonitorItemUserPayload<ExtArgs>
      fields: Prisma.MonitorItemUserFieldRefs
      operations: {
        findUnique: {
          args: Prisma.MonitorItemUserFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorItemUserPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.MonitorItemUserFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorItemUserPayload>
        }
        findFirst: {
          args: Prisma.MonitorItemUserFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorItemUserPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.MonitorItemUserFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorItemUserPayload>
        }
        findMany: {
          args: Prisma.MonitorItemUserFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorItemUserPayload>[]
        }
        create: {
          args: Prisma.MonitorItemUserCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorItemUserPayload>
        }
        createMany: {
          args: Prisma.MonitorItemUserCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.MonitorItemUserCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorItemUserPayload>[]
        }
        delete: {
          args: Prisma.MonitorItemUserDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorItemUserPayload>
        }
        update: {
          args: Prisma.MonitorItemUserUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorItemUserPayload>
        }
        deleteMany: {
          args: Prisma.MonitorItemUserDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.MonitorItemUserUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.MonitorItemUserUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorItemUserPayload>[]
        }
        upsert: {
          args: Prisma.MonitorItemUserUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorItemUserPayload>
        }
        aggregate: {
          args: Prisma.MonitorItemUserAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateMonitorItemUser>
        }
        groupBy: {
          args: Prisma.MonitorItemUserGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.MonitorItemUserGroupByOutputType>[]
        }
        count: {
          args: Prisma.MonitorItemUserCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.MonitorItemUserCountAggregateOutputType> | number
        }
      }
    }
    MonitorRule: {
      payload: Prisma.$MonitorRulePayload<ExtArgs>
      fields: Prisma.MonitorRuleFieldRefs
      operations: {
        findUnique: {
          args: Prisma.MonitorRuleFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorRulePayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.MonitorRuleFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorRulePayload>
        }
        findFirst: {
          args: Prisma.MonitorRuleFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorRulePayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.MonitorRuleFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorRulePayload>
        }
        findMany: {
          args: Prisma.MonitorRuleFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorRulePayload>[]
        }
        create: {
          args: Prisma.MonitorRuleCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorRulePayload>
        }
        createMany: {
          args: Prisma.MonitorRuleCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.MonitorRuleCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorRulePayload>[]
        }
        delete: {
          args: Prisma.MonitorRuleDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorRulePayload>
        }
        update: {
          args: Prisma.MonitorRuleUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorRulePayload>
        }
        deleteMany: {
          args: Prisma.MonitorRuleDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.MonitorRuleUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.MonitorRuleUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorRulePayload>[]
        }
        upsert: {
          args: Prisma.MonitorRuleUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorRulePayload>
        }
        aggregate: {
          args: Prisma.MonitorRuleAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateMonitorRule>
        }
        groupBy: {
          args: Prisma.MonitorRuleGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.MonitorRuleGroupByOutputType>[]
        }
        count: {
          args: Prisma.MonitorRuleCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.MonitorRuleCountAggregateOutputType> | number
        }
      }
    }
    MonitorInstance: {
      payload: Prisma.$MonitorInstancePayload<ExtArgs>
      fields: Prisma.MonitorInstanceFieldRefs
      operations: {
        findUnique: {
          args: Prisma.MonitorInstanceFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorInstancePayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.MonitorInstanceFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorInstancePayload>
        }
        findFirst: {
          args: Prisma.MonitorInstanceFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorInstancePayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.MonitorInstanceFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorInstancePayload>
        }
        findMany: {
          args: Prisma.MonitorInstanceFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorInstancePayload>[]
        }
        create: {
          args: Prisma.MonitorInstanceCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorInstancePayload>
        }
        createMany: {
          args: Prisma.MonitorInstanceCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.MonitorInstanceCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorInstancePayload>[]
        }
        delete: {
          args: Prisma.MonitorInstanceDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorInstancePayload>
        }
        update: {
          args: Prisma.MonitorInstanceUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorInstancePayload>
        }
        deleteMany: {
          args: Prisma.MonitorInstanceDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.MonitorInstanceUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.MonitorInstanceUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorInstancePayload>[]
        }
        upsert: {
          args: Prisma.MonitorInstanceUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorInstancePayload>
        }
        aggregate: {
          args: Prisma.MonitorInstanceAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateMonitorInstance>
        }
        groupBy: {
          args: Prisma.MonitorInstanceGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.MonitorInstanceGroupByOutputType>[]
        }
        count: {
          args: Prisma.MonitorInstanceCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.MonitorInstanceCountAggregateOutputType> | number
        }
      }
    }
    MonitorNotifyLog: {
      payload: Prisma.$MonitorNotifyLogPayload<ExtArgs>
      fields: Prisma.MonitorNotifyLogFieldRefs
      operations: {
        findUnique: {
          args: Prisma.MonitorNotifyLogFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorNotifyLogPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.MonitorNotifyLogFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorNotifyLogPayload>
        }
        findFirst: {
          args: Prisma.MonitorNotifyLogFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorNotifyLogPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.MonitorNotifyLogFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorNotifyLogPayload>
        }
        findMany: {
          args: Prisma.MonitorNotifyLogFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorNotifyLogPayload>[]
        }
        create: {
          args: Prisma.MonitorNotifyLogCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorNotifyLogPayload>
        }
        createMany: {
          args: Prisma.MonitorNotifyLogCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.MonitorNotifyLogCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorNotifyLogPayload>[]
        }
        delete: {
          args: Prisma.MonitorNotifyLogDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorNotifyLogPayload>
        }
        update: {
          args: Prisma.MonitorNotifyLogUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorNotifyLogPayload>
        }
        deleteMany: {
          args: Prisma.MonitorNotifyLogDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.MonitorNotifyLogUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.MonitorNotifyLogUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorNotifyLogPayload>[]
        }
        upsert: {
          args: Prisma.MonitorNotifyLogUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorNotifyLogPayload>
        }
        aggregate: {
          args: Prisma.MonitorNotifyLogAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateMonitorNotifyLog>
        }
        groupBy: {
          args: Prisma.MonitorNotifyLogGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.MonitorNotifyLogGroupByOutputType>[]
        }
        count: {
          args: Prisma.MonitorNotifyLogCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.MonitorNotifyLogCountAggregateOutputType> | number
        }
      }
    }
    MonitorOperateLog: {
      payload: Prisma.$MonitorOperateLogPayload<ExtArgs>
      fields: Prisma.MonitorOperateLogFieldRefs
      operations: {
        findUnique: {
          args: Prisma.MonitorOperateLogFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorOperateLogPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.MonitorOperateLogFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorOperateLogPayload>
        }
        findFirst: {
          args: Prisma.MonitorOperateLogFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorOperateLogPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.MonitorOperateLogFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorOperateLogPayload>
        }
        findMany: {
          args: Prisma.MonitorOperateLogFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorOperateLogPayload>[]
        }
        create: {
          args: Prisma.MonitorOperateLogCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorOperateLogPayload>
        }
        createMany: {
          args: Prisma.MonitorOperateLogCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.MonitorOperateLogCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorOperateLogPayload>[]
        }
        delete: {
          args: Prisma.MonitorOperateLogDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorOperateLogPayload>
        }
        update: {
          args: Prisma.MonitorOperateLogUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorOperateLogPayload>
        }
        deleteMany: {
          args: Prisma.MonitorOperateLogDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.MonitorOperateLogUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.MonitorOperateLogUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorOperateLogPayload>[]
        }
        upsert: {
          args: Prisma.MonitorOperateLogUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$MonitorOperateLogPayload>
        }
        aggregate: {
          args: Prisma.MonitorOperateLogAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateMonitorOperateLog>
        }
        groupBy: {
          args: Prisma.MonitorOperateLogGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.MonitorOperateLogGroupByOutputType>[]
        }
        count: {
          args: Prisma.MonitorOperateLogCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.MonitorOperateLogCountAggregateOutputType> | number
        }
      }
    }
  }
} & {
  other: {
    payload: any
    operations: {
      $executeRaw: {
        args: [query: TemplateStringsArray | Sql, ...values: any[]],
        result: any
      }
      $executeRawUnsafe: {
        args: [query: string, ...values: any[]],
        result: any
      }
      $queryRaw: {
        args: [query: TemplateStringsArray | Sql, ...values: any[]],
        result: any
      }
      $queryRawUnsafe: {
        args: [query: string, ...values: any[]],
        result: any
      }
    }
  }
}

/**
 * Enums
 */

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

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


export const DepartmentScalarFieldEnum = {
  id: 'id',
  name: 'name',
  createdAt: 'createdAt',
  updatedAt: 'updatedAt'
} as const

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


export const UserScalarFieldEnum = {
  id: 'id',
  name: 'name',
  badgeNo: 'badgeNo',
  passwordHash: 'passwordHash',
  isInitialPassword: 'isInitialPassword',
  role: 'role',
  departmentId: 'departmentId',
  createdAt: 'createdAt',
  updatedAt: 'updatedAt'
} as const

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


export const TaskScalarFieldEnum = {
  id: 'id',
  title: 'title',
  description: 'description',
  status: 'status',
  dueDate: 'dueDate',
  creatorId: 'creatorId',
  createdAt: 'createdAt',
  updatedAt: 'updatedAt'
} as const

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


export const TaskDepartmentScalarFieldEnum = {
  taskId: 'taskId',
  departmentId: 'departmentId'
} as const

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


export const TaskMemberScalarFieldEnum = {
  id: 'id',
  taskId: 'taskId',
  userId: 'userId',
  status: 'status',
  createdAt: 'createdAt',
  updatedAt: 'updatedAt'
} as const

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


export const AttachmentScalarFieldEnum = {
  id: 'id',
  taskId: 'taskId',
  uploaderId: 'uploaderId',
  filename: 'filename',
  objectKey: 'objectKey',
  createdAt: 'createdAt'
} as const

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


export const CommentScalarFieldEnum = {
  id: 'id',
  taskId: 'taskId',
  authorId: 'authorId',
  content: 'content',
  createdAt: 'createdAt'
} as const

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


export const TaskStatusHistoryScalarFieldEnum = {
  id: 'id',
  taskId: 'taskId',
  operatorId: 'operatorId',
  fromStatus: 'fromStatus',
  toStatus: 'toStatus',
  operation: 'operation',
  remark: 'remark',
  createdAt: 'createdAt'
} as const

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


export const MonitorPlanScalarFieldEnum = {
  id: 'id',
  planCode: 'planCode',
  planName: 'planName',
  planType: 'planType',
  sourceTaskId: 'sourceTaskId',
  ownerDeptId: 'ownerDeptId',
  ownerDeptName: 'ownerDeptName',
  startDate: 'startDate',
  endDate: 'endDate',
  status: 'status',
  remark: 'remark',
  createdBy: 'createdBy',
  createdAt: 'createdAt',
  updatedBy: 'updatedBy',
  updatedAt: 'updatedAt',
  deletedFlag: 'deletedFlag'
} as const

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


export const MonitorItemScalarFieldEnum = {
  id: 'id',
  planId: 'planId',
  itemCode: 'itemCode',
  itemName: 'itemName',
  itemCategory: 'itemCategory',
  status: 'status',
  cycleType: 'cycleType',
  cycleConf: 'cycleConf',
  dueTime: 'dueTime',
  completeMode: 'completeMode',
  needAttachment: 'needAttachment',
  needRemark: 'needRemark',
  sortNo: 'sortNo',
  isEnabled: 'isEnabled',
  remark: 'remark',
  createdBy: 'createdBy',
  createdAt: 'createdAt',
  updatedBy: 'updatedBy',
  updatedAt: 'updatedAt'
} as const

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


export const MonitorItemUserScalarFieldEnum = {
  id: 'id',
  itemId: 'itemId',
  userId: 'userId',
  userName: 'userName',
  deptId: 'deptId',
  deptName: 'deptName',
  mobile: 'mobile',
  roleType: 'roleType',
  isPrimary: 'isPrimary',
  isEnabled: 'isEnabled',
  createdAt: 'createdAt'
} as const

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


export const MonitorRuleScalarFieldEnum = {
  id: 'id',
  itemId: 'itemId',
  ruleName: 'ruleName',
  triggerType: 'triggerType',
  offsetDays: 'offsetDays',
  offsetHours: 'offsetHours',
  repeatType: 'repeatType',
  repeatInterval: 'repeatInterval',
  remindTime: 'remindTime',
  maxTimes: 'maxTimes',
  channelSms: 'channelSms',
  channelSystem: 'channelSystem',
  stopWhenDone: 'stopWhenDone',
  contentTpl: 'contentTpl',
  isEnabled: 'isEnabled',
  createdBy: 'createdBy',
  createdAt: 'createdAt',
  updatedBy: 'updatedBy',
  updatedAt: 'updatedAt'
} as const

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


export const MonitorInstanceScalarFieldEnum = {
  id: 'id',
  planId: 'planId',
  itemId: 'itemId',
  instanceCode: 'instanceCode',
  periodKey: 'periodKey',
  periodLabel: 'periodLabel',
  periodStart: 'periodStart',
  periodEnd: 'periodEnd',
  dueAt: 'dueAt',
  status: 'status',
  completedBy: 'completedBy',
  completedByName: 'completedByName',
  completedAt: 'completedAt',
  completeRemark: 'completeRemark',
  attachmentJson: 'attachmentJson',
  remindCount: 'remindCount',
  firstRemindAt: 'firstRemindAt',
  lastRemindAt: 'lastRemindAt',
  createdAt: 'createdAt',
  updatedAt: 'updatedAt'
} as const

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


export const MonitorNotifyLogScalarFieldEnum = {
  id: 'id',
  instanceId: 'instanceId',
  ruleId: 'ruleId',
  triggerKey: 'triggerKey',
  receiverUserId: 'receiverUserId',
  receiverName: 'receiverName',
  receiverMobile: 'receiverMobile',
  channel: 'channel',
  title: 'title',
  content: 'content',
  bizDedupeKey: 'bizDedupeKey',
  sendStatus: 'sendStatus',
  sendTime: 'sendTime',
  failReason: 'failReason',
  oracleEid: 'oracleEid',
  oraclePushTime: 'oraclePushTime',
  retryCount: 'retryCount',
  createdAt: 'createdAt'
} as const

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


export const MonitorOperateLogScalarFieldEnum = {
  id: 'id',
  planId: 'planId',
  itemId: 'itemId',
  instanceId: 'instanceId',
  actionType: 'actionType',
  operatorId: 'operatorId',
  operatorName: 'operatorName',
  operatorDeptId: 'operatorDeptId',
  operatorIp: 'operatorIp',
  detailJson: 'detailJson',
  createdAt: 'createdAt'
} as const

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


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

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


export const NullableJsonNullValueInput = {
  DbNull: DbNull,
  JsonNull: JsonNull
} as const

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


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

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


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

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


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

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



/**
 * Field references
 */


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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

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


export type Datasource = {
  url?: string
}
export type Datasources = {
  db?: Datasource
}

export const defineExtension = runtime.Extensions.defineExtension as unknown as runtime.Types.Extensions.ExtendsHook<"define", TypeMapCb, runtime.Types.Extensions.DefaultArgs>
export type DefaultPrismaClient = PrismaClient
export type ErrorFormat = 'pretty' | 'colorless' | 'minimal'
export 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
   * ```
   * // Shorthand for `emit: 'stdout'`
   * log: ['query', 'info', 'warn', 'error']
   * 
   * // Emit as events only
   * log: [
   *   { emit: 'event', level: 'query' },
   *   { emit: 'event', level: 'info' },
   *   { emit: 'event', level: 'warn' }
   *   { emit: 'event', level: 'error' }
   * ]
   * 
   * / Emit as events and log to stdout
   * og: [
   *  { emit: 'stdout', level: 'query' },
   *  { emit: 'stdout', level: 'info' },
   *  { emit: 'stdout', level: 'warn' }
   *  { emit: 'stdout', level: 'error' }
   * 
   * ```
   * Read more in our [docs](https://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?: TransactionIsolationLevel
  }
  /**
   * Instance of a Driver Adapter, e.g., like one provided by `@prisma/adapter-planetscale`
   */
  adapter?: runtime.SqlDriverAdapterFactory | null
  /**
   * Global configuration for omitting model fields by default.
   * 
   * @example
   * ```
   * const prisma = new PrismaClient({
   *   omit: {
   *     user: {
   *       password: true
   *     }
   *   }
   * })
   * ```
   */
  omit?: GlobalOmitConfig
}
export type GlobalOmitConfig = {
  department?: Prisma.DepartmentOmit
  user?: Prisma.UserOmit
  task?: Prisma.TaskOmit
  taskDepartment?: Prisma.TaskDepartmentOmit
  taskMember?: Prisma.TaskMemberOmit
  attachment?: Prisma.AttachmentOmit
  comment?: Prisma.CommentOmit
  taskStatusHistory?: Prisma.TaskStatusHistoryOmit
  monitorPlan?: Prisma.MonitorPlanOmit
  monitorItem?: Prisma.MonitorItemOmit
  monitorItemUser?: Prisma.MonitorItemUserOmit
  monitorRule?: Prisma.MonitorRuleOmit
  monitorInstance?: Prisma.MonitorInstanceOmit
  monitorNotifyLog?: Prisma.MonitorNotifyLogOmit
  monitorOperateLog?: Prisma.MonitorOperateLogOmit
}

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

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

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

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

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

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


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

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

