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

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

export type * from '../models'

export type DMMF = typeof runtime.DMMF

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

/**
 * Prisma Errors
 */

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

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

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

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

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

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



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

export type DecimalJsLike = runtime.DecimalJsLike

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

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

/**
 * Prisma Client JS version: 7.3.0
 * Query Engine version: 9d6ad21cbbceab97458517b147a6a09ff43aa735
 */
export const prismaVersion: PrismaVersion = {
  client: "7.3.0",
  engine: "9d6ad21cbbceab97458517b147a6a09ff43aa735"
}

/**
 * Utility Types
 */

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


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

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

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


type SelectAndInclude = {
  select: any
  include: any
}

type SelectAndOmit = {
  select: any
  omit: any
}

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

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

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

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

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

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

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


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


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

/**
 * From ts-toolbelt
 */

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

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

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

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

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

export type Union = any

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

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

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

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

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

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

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

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

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

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

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

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

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

export type Boolean = True | False

export type True = 1

export type False = 0

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

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

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

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

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

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

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

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

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

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

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


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

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


export const ModelName = {
  Users: 'Users',
  userModuleAccess: 'userModuleAccess',
  Employees: 'Employees',
  LeaveRequests: 'LeaveRequests',
  LeaveRequestsArchive: 'LeaveRequestsArchive',
  Timesheets: 'Timesheets',
  TimesheetsArchive: 'TimesheetsArchive',
  SchedulePresets: 'SchedulePresets',
  SchedulePresetShifts: 'SchedulePresetShifts',
  Shifts: 'Shifts',
  ShiftsArchive: 'ShiftsArchive',
  BankCodes: 'BankCodes',
  Expenses: 'Expenses',
  ExpensesArchive: 'ExpensesArchive',
  OAuthSessions: 'OAuthSessions',
  Sessions: 'Sessions',
  Blobs: 'Blobs',
  Attachments: 'Attachments',
  AttachmentVariants: 'AttachmentVariants',
  Preferences: 'Preferences',
  PaidTimeOff: 'PaidTimeOff',
  PayPeriods: 'PayPeriods'
} 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: "users" | "userModuleAccess" | "employees" | "leaveRequests" | "leaveRequestsArchive" | "timesheets" | "timesheetsArchive" | "schedulePresets" | "schedulePresetShifts" | "shifts" | "shiftsArchive" | "bankCodes" | "expenses" | "expensesArchive" | "oAuthSessions" | "sessions" | "blobs" | "attachments" | "attachmentVariants" | "preferences" | "paidTimeOff" | "payPeriods"
    txIsolationLevel: TransactionIsolationLevel
  }
  model: {
    Users: {
      payload: Prisma.$UsersPayload<ExtArgs>
      fields: Prisma.UsersFieldRefs
      operations: {
        findUnique: {
          args: Prisma.UsersFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$UsersPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.UsersFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$UsersPayload>
        }
        findFirst: {
          args: Prisma.UsersFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$UsersPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.UsersFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$UsersPayload>
        }
        findMany: {
          args: Prisma.UsersFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$UsersPayload>[]
        }
        create: {
          args: Prisma.UsersCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$UsersPayload>
        }
        createMany: {
          args: Prisma.UsersCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.UsersCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$UsersPayload>[]
        }
        delete: {
          args: Prisma.UsersDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$UsersPayload>
        }
        update: {
          args: Prisma.UsersUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$UsersPayload>
        }
        deleteMany: {
          args: Prisma.UsersDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.UsersUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.UsersUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$UsersPayload>[]
        }
        upsert: {
          args: Prisma.UsersUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$UsersPayload>
        }
        aggregate: {
          args: Prisma.UsersAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateUsers>
        }
        groupBy: {
          args: Prisma.UsersGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.UsersGroupByOutputType>[]
        }
        count: {
          args: Prisma.UsersCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.UsersCountAggregateOutputType> | number
        }
      }
    }
    userModuleAccess: {
      payload: Prisma.$userModuleAccessPayload<ExtArgs>
      fields: Prisma.userModuleAccessFieldRefs
      operations: {
        findUnique: {
          args: Prisma.userModuleAccessFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$userModuleAccessPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.userModuleAccessFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$userModuleAccessPayload>
        }
        findFirst: {
          args: Prisma.userModuleAccessFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$userModuleAccessPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.userModuleAccessFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$userModuleAccessPayload>
        }
        findMany: {
          args: Prisma.userModuleAccessFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$userModuleAccessPayload>[]
        }
        create: {
          args: Prisma.userModuleAccessCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$userModuleAccessPayload>
        }
        createMany: {
          args: Prisma.userModuleAccessCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.userModuleAccessCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$userModuleAccessPayload>[]
        }
        delete: {
          args: Prisma.userModuleAccessDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$userModuleAccessPayload>
        }
        update: {
          args: Prisma.userModuleAccessUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$userModuleAccessPayload>
        }
        deleteMany: {
          args: Prisma.userModuleAccessDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.userModuleAccessUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.userModuleAccessUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$userModuleAccessPayload>[]
        }
        upsert: {
          args: Prisma.userModuleAccessUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$userModuleAccessPayload>
        }
        aggregate: {
          args: Prisma.UserModuleAccessAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateUserModuleAccess>
        }
        groupBy: {
          args: Prisma.userModuleAccessGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.UserModuleAccessGroupByOutputType>[]
        }
        count: {
          args: Prisma.userModuleAccessCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.UserModuleAccessCountAggregateOutputType> | number
        }
      }
    }
    Employees: {
      payload: Prisma.$EmployeesPayload<ExtArgs>
      fields: Prisma.EmployeesFieldRefs
      operations: {
        findUnique: {
          args: Prisma.EmployeesFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$EmployeesPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.EmployeesFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$EmployeesPayload>
        }
        findFirst: {
          args: Prisma.EmployeesFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$EmployeesPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.EmployeesFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$EmployeesPayload>
        }
        findMany: {
          args: Prisma.EmployeesFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$EmployeesPayload>[]
        }
        create: {
          args: Prisma.EmployeesCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$EmployeesPayload>
        }
        createMany: {
          args: Prisma.EmployeesCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.EmployeesCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$EmployeesPayload>[]
        }
        delete: {
          args: Prisma.EmployeesDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$EmployeesPayload>
        }
        update: {
          args: Prisma.EmployeesUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$EmployeesPayload>
        }
        deleteMany: {
          args: Prisma.EmployeesDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.EmployeesUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.EmployeesUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$EmployeesPayload>[]
        }
        upsert: {
          args: Prisma.EmployeesUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$EmployeesPayload>
        }
        aggregate: {
          args: Prisma.EmployeesAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateEmployees>
        }
        groupBy: {
          args: Prisma.EmployeesGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.EmployeesGroupByOutputType>[]
        }
        count: {
          args: Prisma.EmployeesCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.EmployeesCountAggregateOutputType> | number
        }
      }
    }
    LeaveRequests: {
      payload: Prisma.$LeaveRequestsPayload<ExtArgs>
      fields: Prisma.LeaveRequestsFieldRefs
      operations: {
        findUnique: {
          args: Prisma.LeaveRequestsFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$LeaveRequestsPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.LeaveRequestsFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$LeaveRequestsPayload>
        }
        findFirst: {
          args: Prisma.LeaveRequestsFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$LeaveRequestsPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.LeaveRequestsFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$LeaveRequestsPayload>
        }
        findMany: {
          args: Prisma.LeaveRequestsFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$LeaveRequestsPayload>[]
        }
        create: {
          args: Prisma.LeaveRequestsCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$LeaveRequestsPayload>
        }
        createMany: {
          args: Prisma.LeaveRequestsCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.LeaveRequestsCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$LeaveRequestsPayload>[]
        }
        delete: {
          args: Prisma.LeaveRequestsDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$LeaveRequestsPayload>
        }
        update: {
          args: Prisma.LeaveRequestsUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$LeaveRequestsPayload>
        }
        deleteMany: {
          args: Prisma.LeaveRequestsDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.LeaveRequestsUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.LeaveRequestsUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$LeaveRequestsPayload>[]
        }
        upsert: {
          args: Prisma.LeaveRequestsUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$LeaveRequestsPayload>
        }
        aggregate: {
          args: Prisma.LeaveRequestsAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateLeaveRequests>
        }
        groupBy: {
          args: Prisma.LeaveRequestsGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.LeaveRequestsGroupByOutputType>[]
        }
        count: {
          args: Prisma.LeaveRequestsCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.LeaveRequestsCountAggregateOutputType> | number
        }
      }
    }
    LeaveRequestsArchive: {
      payload: Prisma.$LeaveRequestsArchivePayload<ExtArgs>
      fields: Prisma.LeaveRequestsArchiveFieldRefs
      operations: {
        findUnique: {
          args: Prisma.LeaveRequestsArchiveFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$LeaveRequestsArchivePayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.LeaveRequestsArchiveFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$LeaveRequestsArchivePayload>
        }
        findFirst: {
          args: Prisma.LeaveRequestsArchiveFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$LeaveRequestsArchivePayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.LeaveRequestsArchiveFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$LeaveRequestsArchivePayload>
        }
        findMany: {
          args: Prisma.LeaveRequestsArchiveFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$LeaveRequestsArchivePayload>[]
        }
        create: {
          args: Prisma.LeaveRequestsArchiveCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$LeaveRequestsArchivePayload>
        }
        createMany: {
          args: Prisma.LeaveRequestsArchiveCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.LeaveRequestsArchiveCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$LeaveRequestsArchivePayload>[]
        }
        delete: {
          args: Prisma.LeaveRequestsArchiveDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$LeaveRequestsArchivePayload>
        }
        update: {
          args: Prisma.LeaveRequestsArchiveUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$LeaveRequestsArchivePayload>
        }
        deleteMany: {
          args: Prisma.LeaveRequestsArchiveDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.LeaveRequestsArchiveUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.LeaveRequestsArchiveUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$LeaveRequestsArchivePayload>[]
        }
        upsert: {
          args: Prisma.LeaveRequestsArchiveUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$LeaveRequestsArchivePayload>
        }
        aggregate: {
          args: Prisma.LeaveRequestsArchiveAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateLeaveRequestsArchive>
        }
        groupBy: {
          args: Prisma.LeaveRequestsArchiveGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.LeaveRequestsArchiveGroupByOutputType>[]
        }
        count: {
          args: Prisma.LeaveRequestsArchiveCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.LeaveRequestsArchiveCountAggregateOutputType> | number
        }
      }
    }
    Timesheets: {
      payload: Prisma.$TimesheetsPayload<ExtArgs>
      fields: Prisma.TimesheetsFieldRefs
      operations: {
        findUnique: {
          args: Prisma.TimesheetsFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TimesheetsPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.TimesheetsFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TimesheetsPayload>
        }
        findFirst: {
          args: Prisma.TimesheetsFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TimesheetsPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.TimesheetsFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TimesheetsPayload>
        }
        findMany: {
          args: Prisma.TimesheetsFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TimesheetsPayload>[]
        }
        create: {
          args: Prisma.TimesheetsCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TimesheetsPayload>
        }
        createMany: {
          args: Prisma.TimesheetsCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.TimesheetsCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TimesheetsPayload>[]
        }
        delete: {
          args: Prisma.TimesheetsDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TimesheetsPayload>
        }
        update: {
          args: Prisma.TimesheetsUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TimesheetsPayload>
        }
        deleteMany: {
          args: Prisma.TimesheetsDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.TimesheetsUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.TimesheetsUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TimesheetsPayload>[]
        }
        upsert: {
          args: Prisma.TimesheetsUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TimesheetsPayload>
        }
        aggregate: {
          args: Prisma.TimesheetsAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateTimesheets>
        }
        groupBy: {
          args: Prisma.TimesheetsGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.TimesheetsGroupByOutputType>[]
        }
        count: {
          args: Prisma.TimesheetsCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.TimesheetsCountAggregateOutputType> | number
        }
      }
    }
    TimesheetsArchive: {
      payload: Prisma.$TimesheetsArchivePayload<ExtArgs>
      fields: Prisma.TimesheetsArchiveFieldRefs
      operations: {
        findUnique: {
          args: Prisma.TimesheetsArchiveFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TimesheetsArchivePayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.TimesheetsArchiveFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TimesheetsArchivePayload>
        }
        findFirst: {
          args: Prisma.TimesheetsArchiveFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TimesheetsArchivePayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.TimesheetsArchiveFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TimesheetsArchivePayload>
        }
        findMany: {
          args: Prisma.TimesheetsArchiveFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TimesheetsArchivePayload>[]
        }
        create: {
          args: Prisma.TimesheetsArchiveCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TimesheetsArchivePayload>
        }
        createMany: {
          args: Prisma.TimesheetsArchiveCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.TimesheetsArchiveCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TimesheetsArchivePayload>[]
        }
        delete: {
          args: Prisma.TimesheetsArchiveDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TimesheetsArchivePayload>
        }
        update: {
          args: Prisma.TimesheetsArchiveUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TimesheetsArchivePayload>
        }
        deleteMany: {
          args: Prisma.TimesheetsArchiveDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.TimesheetsArchiveUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.TimesheetsArchiveUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TimesheetsArchivePayload>[]
        }
        upsert: {
          args: Prisma.TimesheetsArchiveUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$TimesheetsArchivePayload>
        }
        aggregate: {
          args: Prisma.TimesheetsArchiveAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateTimesheetsArchive>
        }
        groupBy: {
          args: Prisma.TimesheetsArchiveGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.TimesheetsArchiveGroupByOutputType>[]
        }
        count: {
          args: Prisma.TimesheetsArchiveCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.TimesheetsArchiveCountAggregateOutputType> | number
        }
      }
    }
    SchedulePresets: {
      payload: Prisma.$SchedulePresetsPayload<ExtArgs>
      fields: Prisma.SchedulePresetsFieldRefs
      operations: {
        findUnique: {
          args: Prisma.SchedulePresetsFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$SchedulePresetsPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.SchedulePresetsFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$SchedulePresetsPayload>
        }
        findFirst: {
          args: Prisma.SchedulePresetsFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$SchedulePresetsPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.SchedulePresetsFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$SchedulePresetsPayload>
        }
        findMany: {
          args: Prisma.SchedulePresetsFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$SchedulePresetsPayload>[]
        }
        create: {
          args: Prisma.SchedulePresetsCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$SchedulePresetsPayload>
        }
        createMany: {
          args: Prisma.SchedulePresetsCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.SchedulePresetsCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$SchedulePresetsPayload>[]
        }
        delete: {
          args: Prisma.SchedulePresetsDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$SchedulePresetsPayload>
        }
        update: {
          args: Prisma.SchedulePresetsUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$SchedulePresetsPayload>
        }
        deleteMany: {
          args: Prisma.SchedulePresetsDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.SchedulePresetsUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.SchedulePresetsUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$SchedulePresetsPayload>[]
        }
        upsert: {
          args: Prisma.SchedulePresetsUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$SchedulePresetsPayload>
        }
        aggregate: {
          args: Prisma.SchedulePresetsAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateSchedulePresets>
        }
        groupBy: {
          args: Prisma.SchedulePresetsGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.SchedulePresetsGroupByOutputType>[]
        }
        count: {
          args: Prisma.SchedulePresetsCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.SchedulePresetsCountAggregateOutputType> | number
        }
      }
    }
    SchedulePresetShifts: {
      payload: Prisma.$SchedulePresetShiftsPayload<ExtArgs>
      fields: Prisma.SchedulePresetShiftsFieldRefs
      operations: {
        findUnique: {
          args: Prisma.SchedulePresetShiftsFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$SchedulePresetShiftsPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.SchedulePresetShiftsFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$SchedulePresetShiftsPayload>
        }
        findFirst: {
          args: Prisma.SchedulePresetShiftsFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$SchedulePresetShiftsPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.SchedulePresetShiftsFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$SchedulePresetShiftsPayload>
        }
        findMany: {
          args: Prisma.SchedulePresetShiftsFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$SchedulePresetShiftsPayload>[]
        }
        create: {
          args: Prisma.SchedulePresetShiftsCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$SchedulePresetShiftsPayload>
        }
        createMany: {
          args: Prisma.SchedulePresetShiftsCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.SchedulePresetShiftsCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$SchedulePresetShiftsPayload>[]
        }
        delete: {
          args: Prisma.SchedulePresetShiftsDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$SchedulePresetShiftsPayload>
        }
        update: {
          args: Prisma.SchedulePresetShiftsUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$SchedulePresetShiftsPayload>
        }
        deleteMany: {
          args: Prisma.SchedulePresetShiftsDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.SchedulePresetShiftsUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.SchedulePresetShiftsUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$SchedulePresetShiftsPayload>[]
        }
        upsert: {
          args: Prisma.SchedulePresetShiftsUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$SchedulePresetShiftsPayload>
        }
        aggregate: {
          args: Prisma.SchedulePresetShiftsAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateSchedulePresetShifts>
        }
        groupBy: {
          args: Prisma.SchedulePresetShiftsGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.SchedulePresetShiftsGroupByOutputType>[]
        }
        count: {
          args: Prisma.SchedulePresetShiftsCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.SchedulePresetShiftsCountAggregateOutputType> | number
        }
      }
    }
    Shifts: {
      payload: Prisma.$ShiftsPayload<ExtArgs>
      fields: Prisma.ShiftsFieldRefs
      operations: {
        findUnique: {
          args: Prisma.ShiftsFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ShiftsPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.ShiftsFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ShiftsPayload>
        }
        findFirst: {
          args: Prisma.ShiftsFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ShiftsPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.ShiftsFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ShiftsPayload>
        }
        findMany: {
          args: Prisma.ShiftsFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ShiftsPayload>[]
        }
        create: {
          args: Prisma.ShiftsCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ShiftsPayload>
        }
        createMany: {
          args: Prisma.ShiftsCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.ShiftsCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ShiftsPayload>[]
        }
        delete: {
          args: Prisma.ShiftsDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ShiftsPayload>
        }
        update: {
          args: Prisma.ShiftsUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ShiftsPayload>
        }
        deleteMany: {
          args: Prisma.ShiftsDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.ShiftsUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.ShiftsUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ShiftsPayload>[]
        }
        upsert: {
          args: Prisma.ShiftsUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ShiftsPayload>
        }
        aggregate: {
          args: Prisma.ShiftsAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateShifts>
        }
        groupBy: {
          args: Prisma.ShiftsGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.ShiftsGroupByOutputType>[]
        }
        count: {
          args: Prisma.ShiftsCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.ShiftsCountAggregateOutputType> | number
        }
      }
    }
    ShiftsArchive: {
      payload: Prisma.$ShiftsArchivePayload<ExtArgs>
      fields: Prisma.ShiftsArchiveFieldRefs
      operations: {
        findUnique: {
          args: Prisma.ShiftsArchiveFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ShiftsArchivePayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.ShiftsArchiveFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ShiftsArchivePayload>
        }
        findFirst: {
          args: Prisma.ShiftsArchiveFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ShiftsArchivePayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.ShiftsArchiveFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ShiftsArchivePayload>
        }
        findMany: {
          args: Prisma.ShiftsArchiveFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ShiftsArchivePayload>[]
        }
        create: {
          args: Prisma.ShiftsArchiveCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ShiftsArchivePayload>
        }
        createMany: {
          args: Prisma.ShiftsArchiveCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.ShiftsArchiveCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ShiftsArchivePayload>[]
        }
        delete: {
          args: Prisma.ShiftsArchiveDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ShiftsArchivePayload>
        }
        update: {
          args: Prisma.ShiftsArchiveUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ShiftsArchivePayload>
        }
        deleteMany: {
          args: Prisma.ShiftsArchiveDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.ShiftsArchiveUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.ShiftsArchiveUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ShiftsArchivePayload>[]
        }
        upsert: {
          args: Prisma.ShiftsArchiveUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ShiftsArchivePayload>
        }
        aggregate: {
          args: Prisma.ShiftsArchiveAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateShiftsArchive>
        }
        groupBy: {
          args: Prisma.ShiftsArchiveGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.ShiftsArchiveGroupByOutputType>[]
        }
        count: {
          args: Prisma.ShiftsArchiveCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.ShiftsArchiveCountAggregateOutputType> | number
        }
      }
    }
    BankCodes: {
      payload: Prisma.$BankCodesPayload<ExtArgs>
      fields: Prisma.BankCodesFieldRefs
      operations: {
        findUnique: {
          args: Prisma.BankCodesFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$BankCodesPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.BankCodesFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$BankCodesPayload>
        }
        findFirst: {
          args: Prisma.BankCodesFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$BankCodesPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.BankCodesFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$BankCodesPayload>
        }
        findMany: {
          args: Prisma.BankCodesFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$BankCodesPayload>[]
        }
        create: {
          args: Prisma.BankCodesCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$BankCodesPayload>
        }
        createMany: {
          args: Prisma.BankCodesCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.BankCodesCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$BankCodesPayload>[]
        }
        delete: {
          args: Prisma.BankCodesDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$BankCodesPayload>
        }
        update: {
          args: Prisma.BankCodesUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$BankCodesPayload>
        }
        deleteMany: {
          args: Prisma.BankCodesDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.BankCodesUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.BankCodesUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$BankCodesPayload>[]
        }
        upsert: {
          args: Prisma.BankCodesUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$BankCodesPayload>
        }
        aggregate: {
          args: Prisma.BankCodesAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateBankCodes>
        }
        groupBy: {
          args: Prisma.BankCodesGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.BankCodesGroupByOutputType>[]
        }
        count: {
          args: Prisma.BankCodesCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.BankCodesCountAggregateOutputType> | number
        }
      }
    }
    Expenses: {
      payload: Prisma.$ExpensesPayload<ExtArgs>
      fields: Prisma.ExpensesFieldRefs
      operations: {
        findUnique: {
          args: Prisma.ExpensesFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ExpensesPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.ExpensesFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ExpensesPayload>
        }
        findFirst: {
          args: Prisma.ExpensesFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ExpensesPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.ExpensesFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ExpensesPayload>
        }
        findMany: {
          args: Prisma.ExpensesFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ExpensesPayload>[]
        }
        create: {
          args: Prisma.ExpensesCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ExpensesPayload>
        }
        createMany: {
          args: Prisma.ExpensesCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.ExpensesCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ExpensesPayload>[]
        }
        delete: {
          args: Prisma.ExpensesDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ExpensesPayload>
        }
        update: {
          args: Prisma.ExpensesUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ExpensesPayload>
        }
        deleteMany: {
          args: Prisma.ExpensesDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.ExpensesUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.ExpensesUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ExpensesPayload>[]
        }
        upsert: {
          args: Prisma.ExpensesUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ExpensesPayload>
        }
        aggregate: {
          args: Prisma.ExpensesAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateExpenses>
        }
        groupBy: {
          args: Prisma.ExpensesGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.ExpensesGroupByOutputType>[]
        }
        count: {
          args: Prisma.ExpensesCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.ExpensesCountAggregateOutputType> | number
        }
      }
    }
    ExpensesArchive: {
      payload: Prisma.$ExpensesArchivePayload<ExtArgs>
      fields: Prisma.ExpensesArchiveFieldRefs
      operations: {
        findUnique: {
          args: Prisma.ExpensesArchiveFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ExpensesArchivePayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.ExpensesArchiveFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ExpensesArchivePayload>
        }
        findFirst: {
          args: Prisma.ExpensesArchiveFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ExpensesArchivePayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.ExpensesArchiveFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ExpensesArchivePayload>
        }
        findMany: {
          args: Prisma.ExpensesArchiveFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ExpensesArchivePayload>[]
        }
        create: {
          args: Prisma.ExpensesArchiveCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ExpensesArchivePayload>
        }
        createMany: {
          args: Prisma.ExpensesArchiveCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.ExpensesArchiveCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ExpensesArchivePayload>[]
        }
        delete: {
          args: Prisma.ExpensesArchiveDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ExpensesArchivePayload>
        }
        update: {
          args: Prisma.ExpensesArchiveUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ExpensesArchivePayload>
        }
        deleteMany: {
          args: Prisma.ExpensesArchiveDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.ExpensesArchiveUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.ExpensesArchiveUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ExpensesArchivePayload>[]
        }
        upsert: {
          args: Prisma.ExpensesArchiveUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$ExpensesArchivePayload>
        }
        aggregate: {
          args: Prisma.ExpensesArchiveAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateExpensesArchive>
        }
        groupBy: {
          args: Prisma.ExpensesArchiveGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.ExpensesArchiveGroupByOutputType>[]
        }
        count: {
          args: Prisma.ExpensesArchiveCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.ExpensesArchiveCountAggregateOutputType> | number
        }
      }
    }
    OAuthSessions: {
      payload: Prisma.$OAuthSessionsPayload<ExtArgs>
      fields: Prisma.OAuthSessionsFieldRefs
      operations: {
        findUnique: {
          args: Prisma.OAuthSessionsFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$OAuthSessionsPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.OAuthSessionsFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$OAuthSessionsPayload>
        }
        findFirst: {
          args: Prisma.OAuthSessionsFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$OAuthSessionsPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.OAuthSessionsFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$OAuthSessionsPayload>
        }
        findMany: {
          args: Prisma.OAuthSessionsFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$OAuthSessionsPayload>[]
        }
        create: {
          args: Prisma.OAuthSessionsCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$OAuthSessionsPayload>
        }
        createMany: {
          args: Prisma.OAuthSessionsCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.OAuthSessionsCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$OAuthSessionsPayload>[]
        }
        delete: {
          args: Prisma.OAuthSessionsDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$OAuthSessionsPayload>
        }
        update: {
          args: Prisma.OAuthSessionsUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$OAuthSessionsPayload>
        }
        deleteMany: {
          args: Prisma.OAuthSessionsDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.OAuthSessionsUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.OAuthSessionsUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$OAuthSessionsPayload>[]
        }
        upsert: {
          args: Prisma.OAuthSessionsUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$OAuthSessionsPayload>
        }
        aggregate: {
          args: Prisma.OAuthSessionsAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateOAuthSessions>
        }
        groupBy: {
          args: Prisma.OAuthSessionsGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.OAuthSessionsGroupByOutputType>[]
        }
        count: {
          args: Prisma.OAuthSessionsCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.OAuthSessionsCountAggregateOutputType> | number
        }
      }
    }
    Sessions: {
      payload: Prisma.$SessionsPayload<ExtArgs>
      fields: Prisma.SessionsFieldRefs
      operations: {
        findUnique: {
          args: Prisma.SessionsFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$SessionsPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.SessionsFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$SessionsPayload>
        }
        findFirst: {
          args: Prisma.SessionsFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$SessionsPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.SessionsFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$SessionsPayload>
        }
        findMany: {
          args: Prisma.SessionsFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$SessionsPayload>[]
        }
        create: {
          args: Prisma.SessionsCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$SessionsPayload>
        }
        createMany: {
          args: Prisma.SessionsCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.SessionsCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$SessionsPayload>[]
        }
        delete: {
          args: Prisma.SessionsDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$SessionsPayload>
        }
        update: {
          args: Prisma.SessionsUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$SessionsPayload>
        }
        deleteMany: {
          args: Prisma.SessionsDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.SessionsUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.SessionsUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$SessionsPayload>[]
        }
        upsert: {
          args: Prisma.SessionsUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$SessionsPayload>
        }
        aggregate: {
          args: Prisma.SessionsAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateSessions>
        }
        groupBy: {
          args: Prisma.SessionsGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.SessionsGroupByOutputType>[]
        }
        count: {
          args: Prisma.SessionsCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.SessionsCountAggregateOutputType> | number
        }
      }
    }
    Blobs: {
      payload: Prisma.$BlobsPayload<ExtArgs>
      fields: Prisma.BlobsFieldRefs
      operations: {
        findUnique: {
          args: Prisma.BlobsFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$BlobsPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.BlobsFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$BlobsPayload>
        }
        findFirst: {
          args: Prisma.BlobsFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$BlobsPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.BlobsFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$BlobsPayload>
        }
        findMany: {
          args: Prisma.BlobsFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$BlobsPayload>[]
        }
        create: {
          args: Prisma.BlobsCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$BlobsPayload>
        }
        createMany: {
          args: Prisma.BlobsCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.BlobsCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$BlobsPayload>[]
        }
        delete: {
          args: Prisma.BlobsDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$BlobsPayload>
        }
        update: {
          args: Prisma.BlobsUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$BlobsPayload>
        }
        deleteMany: {
          args: Prisma.BlobsDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.BlobsUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.BlobsUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$BlobsPayload>[]
        }
        upsert: {
          args: Prisma.BlobsUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$BlobsPayload>
        }
        aggregate: {
          args: Prisma.BlobsAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateBlobs>
        }
        groupBy: {
          args: Prisma.BlobsGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.BlobsGroupByOutputType>[]
        }
        count: {
          args: Prisma.BlobsCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.BlobsCountAggregateOutputType> | number
        }
      }
    }
    Attachments: {
      payload: Prisma.$AttachmentsPayload<ExtArgs>
      fields: Prisma.AttachmentsFieldRefs
      operations: {
        findUnique: {
          args: Prisma.AttachmentsFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$AttachmentsPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.AttachmentsFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$AttachmentsPayload>
        }
        findFirst: {
          args: Prisma.AttachmentsFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$AttachmentsPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.AttachmentsFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$AttachmentsPayload>
        }
        findMany: {
          args: Prisma.AttachmentsFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$AttachmentsPayload>[]
        }
        create: {
          args: Prisma.AttachmentsCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$AttachmentsPayload>
        }
        createMany: {
          args: Prisma.AttachmentsCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.AttachmentsCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$AttachmentsPayload>[]
        }
        delete: {
          args: Prisma.AttachmentsDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$AttachmentsPayload>
        }
        update: {
          args: Prisma.AttachmentsUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$AttachmentsPayload>
        }
        deleteMany: {
          args: Prisma.AttachmentsDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.AttachmentsUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.AttachmentsUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$AttachmentsPayload>[]
        }
        upsert: {
          args: Prisma.AttachmentsUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$AttachmentsPayload>
        }
        aggregate: {
          args: Prisma.AttachmentsAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateAttachments>
        }
        groupBy: {
          args: Prisma.AttachmentsGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AttachmentsGroupByOutputType>[]
        }
        count: {
          args: Prisma.AttachmentsCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AttachmentsCountAggregateOutputType> | number
        }
      }
    }
    AttachmentVariants: {
      payload: Prisma.$AttachmentVariantsPayload<ExtArgs>
      fields: Prisma.AttachmentVariantsFieldRefs
      operations: {
        findUnique: {
          args: Prisma.AttachmentVariantsFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$AttachmentVariantsPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.AttachmentVariantsFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$AttachmentVariantsPayload>
        }
        findFirst: {
          args: Prisma.AttachmentVariantsFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$AttachmentVariantsPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.AttachmentVariantsFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$AttachmentVariantsPayload>
        }
        findMany: {
          args: Prisma.AttachmentVariantsFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$AttachmentVariantsPayload>[]
        }
        create: {
          args: Prisma.AttachmentVariantsCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$AttachmentVariantsPayload>
        }
        createMany: {
          args: Prisma.AttachmentVariantsCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.AttachmentVariantsCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$AttachmentVariantsPayload>[]
        }
        delete: {
          args: Prisma.AttachmentVariantsDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$AttachmentVariantsPayload>
        }
        update: {
          args: Prisma.AttachmentVariantsUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$AttachmentVariantsPayload>
        }
        deleteMany: {
          args: Prisma.AttachmentVariantsDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.AttachmentVariantsUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.AttachmentVariantsUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$AttachmentVariantsPayload>[]
        }
        upsert: {
          args: Prisma.AttachmentVariantsUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$AttachmentVariantsPayload>
        }
        aggregate: {
          args: Prisma.AttachmentVariantsAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateAttachmentVariants>
        }
        groupBy: {
          args: Prisma.AttachmentVariantsGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AttachmentVariantsGroupByOutputType>[]
        }
        count: {
          args: Prisma.AttachmentVariantsCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AttachmentVariantsCountAggregateOutputType> | number
        }
      }
    }
    Preferences: {
      payload: Prisma.$PreferencesPayload<ExtArgs>
      fields: Prisma.PreferencesFieldRefs
      operations: {
        findUnique: {
          args: Prisma.PreferencesFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PreferencesPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.PreferencesFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PreferencesPayload>
        }
        findFirst: {
          args: Prisma.PreferencesFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PreferencesPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.PreferencesFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PreferencesPayload>
        }
        findMany: {
          args: Prisma.PreferencesFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PreferencesPayload>[]
        }
        create: {
          args: Prisma.PreferencesCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PreferencesPayload>
        }
        createMany: {
          args: Prisma.PreferencesCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.PreferencesCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PreferencesPayload>[]
        }
        delete: {
          args: Prisma.PreferencesDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PreferencesPayload>
        }
        update: {
          args: Prisma.PreferencesUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PreferencesPayload>
        }
        deleteMany: {
          args: Prisma.PreferencesDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.PreferencesUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.PreferencesUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PreferencesPayload>[]
        }
        upsert: {
          args: Prisma.PreferencesUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PreferencesPayload>
        }
        aggregate: {
          args: Prisma.PreferencesAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregatePreferences>
        }
        groupBy: {
          args: Prisma.PreferencesGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.PreferencesGroupByOutputType>[]
        }
        count: {
          args: Prisma.PreferencesCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.PreferencesCountAggregateOutputType> | number
        }
      }
    }
    PaidTimeOff: {
      payload: Prisma.$PaidTimeOffPayload<ExtArgs>
      fields: Prisma.PaidTimeOffFieldRefs
      operations: {
        findUnique: {
          args: Prisma.PaidTimeOffFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PaidTimeOffPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.PaidTimeOffFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PaidTimeOffPayload>
        }
        findFirst: {
          args: Prisma.PaidTimeOffFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PaidTimeOffPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.PaidTimeOffFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PaidTimeOffPayload>
        }
        findMany: {
          args: Prisma.PaidTimeOffFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PaidTimeOffPayload>[]
        }
        create: {
          args: Prisma.PaidTimeOffCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PaidTimeOffPayload>
        }
        createMany: {
          args: Prisma.PaidTimeOffCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.PaidTimeOffCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PaidTimeOffPayload>[]
        }
        delete: {
          args: Prisma.PaidTimeOffDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PaidTimeOffPayload>
        }
        update: {
          args: Prisma.PaidTimeOffUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PaidTimeOffPayload>
        }
        deleteMany: {
          args: Prisma.PaidTimeOffDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.PaidTimeOffUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.PaidTimeOffUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PaidTimeOffPayload>[]
        }
        upsert: {
          args: Prisma.PaidTimeOffUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PaidTimeOffPayload>
        }
        aggregate: {
          args: Prisma.PaidTimeOffAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregatePaidTimeOff>
        }
        groupBy: {
          args: Prisma.PaidTimeOffGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.PaidTimeOffGroupByOutputType>[]
        }
        count: {
          args: Prisma.PaidTimeOffCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.PaidTimeOffCountAggregateOutputType> | number
        }
      }
    }
    PayPeriods: {
      payload: Prisma.$PayPeriodsPayload<ExtArgs>
      fields: Prisma.PayPeriodsFieldRefs
      operations: {
        findFirst: {
          args: Prisma.PayPeriodsFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PayPeriodsPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.PayPeriodsFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PayPeriodsPayload>
        }
        findMany: {
          args: Prisma.PayPeriodsFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$PayPeriodsPayload>[]
        }
        aggregate: {
          args: Prisma.PayPeriodsAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregatePayPeriods>
        }
        groupBy: {
          args: Prisma.PayPeriodsGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.PayPeriodsGroupByOutputType>[]
        }
        count: {
          args: Prisma.PayPeriodsCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.PayPeriodsCountAggregateOutputType> | 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 UsersScalarFieldEnum = {
  id: 'id',
  first_name: 'first_name',
  last_name: 'last_name',
  email: 'email',
  phone_number: 'phone_number',
  residence: 'residence',
  role: 'role'
} as const

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


export const UserModuleAccessScalarFieldEnum = {
  id: 'id',
  user_id: 'user_id',
  timesheets: 'timesheets',
  timesheets_approval: 'timesheets_approval',
  employee_list: 'employee_list',
  employee_management: 'employee_management',
  personal_profile: 'personal_profile',
  dashboard: 'dashboard',
  chatbot: 'chatbot'
} as const

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


export const EmployeesScalarFieldEnum = {
  id: 'id',
  user_id: 'user_id',
  external_payroll_id: 'external_payroll_id',
  company_code: 'company_code',
  daily_expected_hours: 'daily_expected_hours',
  first_work_day: 'first_work_day',
  last_work_day: 'last_work_day',
  supervisor_id: 'supervisor_id',
  job_title: 'job_title',
  is_supervisor: 'is_supervisor',
  schedule_preset_id: 'schedule_preset_id'
} as const

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


export const LeaveRequestsScalarFieldEnum = {
  id: 'id',
  employee_id: 'employee_id',
  leave_type: 'leave_type',
  comment: 'comment',
  approval_status: 'approval_status',
  bank_code_id: 'bank_code_id',
  payable_hours: 'payable_hours',
  requested_hours: 'requested_hours',
  dates: 'dates'
} as const

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


export const LeaveRequestsArchiveScalarFieldEnum = {
  id: 'id',
  leave_request_id: 'leave_request_id',
  archived_at: 'archived_at',
  employee_id: 'employee_id',
  leave_type: 'leave_type',
  comment: 'comment',
  approval_status: 'approval_status',
  date: 'date',
  payable_hours: 'payable_hours',
  requested_hours: 'requested_hours'
} as const

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


export const TimesheetsScalarFieldEnum = {
  id: 'id',
  employee_id: 'employee_id',
  is_approved: 'is_approved',
  start_date: 'start_date'
} as const

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


export const TimesheetsArchiveScalarFieldEnum = {
  id: 'id',
  timesheet_id: 'timesheet_id',
  archive_at: 'archive_at',
  employee_id: 'employee_id',
  is_approved: 'is_approved'
} as const

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


export const SchedulePresetsScalarFieldEnum = {
  id: 'id',
  name: 'name',
  is_default: 'is_default'
} as const

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


export const SchedulePresetShiftsScalarFieldEnum = {
  id: 'id',
  preset_id: 'preset_id',
  bank_code_id: 'bank_code_id',
  start_time: 'start_time',
  end_time: 'end_time',
  is_remote: 'is_remote',
  week_day: 'week_day'
} as const

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


export const ShiftsScalarFieldEnum = {
  id: 'id',
  timesheet_id: 'timesheet_id',
  date: 'date',
  start_time: 'start_time',
  end_time: 'end_time',
  bank_code_id: 'bank_code_id',
  is_approved: 'is_approved',
  is_remote: 'is_remote',
  comment: 'comment'
} as const

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


export const ShiftsArchiveScalarFieldEnum = {
  id: 'id',
  shift_id: 'shift_id',
  archive_at: 'archive_at',
  timesheet_id: 'timesheet_id',
  date: 'date',
  start_time: 'start_time',
  end_time: 'end_time',
  bank_code_id: 'bank_code_id',
  comment: 'comment'
} as const

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


export const BankCodesScalarFieldEnum = {
  id: 'id',
  type: 'type',
  categorie: 'categorie',
  modifier: 'modifier',
  bank_code: 'bank_code'
} as const

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


export const ExpensesScalarFieldEnum = {
  id: 'id',
  timesheet_id: 'timesheet_id',
  date: 'date',
  amount: 'amount',
  is_approved: 'is_approved',
  supervisor_comment: 'supervisor_comment',
  bank_code_id: 'bank_code_id',
  comment: 'comment',
  attachment: 'attachment',
  mileage: 'mileage'
} as const

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


export const ExpensesArchiveScalarFieldEnum = {
  id: 'id',
  expense_id: 'expense_id',
  timesheet_id: 'timesheet_id',
  archived_at: 'archived_at',
  date: 'date',
  amount: 'amount',
  is_approved: 'is_approved',
  supervisor_comment: 'supervisor_comment',
  bank_code_id: 'bank_code_id',
  comment: 'comment',
  attachment: 'attachment',
  mileage: 'mileage'
} as const

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


export const OAuthSessionsScalarFieldEnum = {
  id: 'id',
  user_id: 'user_id',
  application: 'application',
  access_token: 'access_token',
  refresh_token: 'refresh_token',
  access_token_expiry: 'access_token_expiry',
  refresh_token_expiry: 'refresh_token_expiry',
  is_revoked: 'is_revoked',
  scopes: 'scopes',
  created_at: 'created_at',
  updated_at: 'updated_at',
  sid: 'sid'
} as const

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


export const SessionsScalarFieldEnum = {
  id: 'id',
  sid: 'sid',
  data: 'data',
  expiresAt: 'expiresAt'
} as const

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


export const BlobsScalarFieldEnum = {
  sha256: 'sha256',
  size: 'size',
  mime: 'mime',
  storage_path: 'storage_path',
  refcount: 'refcount',
  created_at: 'created_at'
} as const

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


export const AttachmentsScalarFieldEnum = {
  id: 'id',
  sha256: 'sha256',
  owner_type: 'owner_type',
  owner_id: 'owner_id',
  status: 'status',
  created_by: 'created_by',
  created_at: 'created_at',
  original_name: 'original_name',
  retention_policy: 'retention_policy'
} as const

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


export const AttachmentVariantsScalarFieldEnum = {
  id: 'id',
  attachment_id: 'attachment_id',
  variant: 'variant',
  bytes: 'bytes',
  width: 'width',
  height: 'height',
  created_at: 'created_at',
  path: 'path'
} as const

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


export const PreferencesScalarFieldEnum = {
  user_id: 'user_id',
  id: 'id',
  display_language: 'display_language',
  is_dark_mode: 'is_dark_mode',
  is_employee_list_grid: 'is_employee_list_grid',
  is_lefty_mode: 'is_lefty_mode',
  is_timesheet_approval_grid: 'is_timesheet_approval_grid',
  notifications: 'notifications'
} as const

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


export const PaidTimeOffScalarFieldEnum = {
  id: 'id',
  employee_id: 'employee_id',
  vacation_hours: 'vacation_hours',
  banked_hours: 'banked_hours',
  sick_hours: 'sick_hours',
  last_updated: 'last_updated'
} as const

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


export const PayPeriodsScalarFieldEnum = {
  pay_year: 'pay_year',
  pay_period_no: 'pay_period_no',
  period_start: 'period_start',
  period_end: 'period_end',
  payday: 'payday',
  label: 'label'
} as const

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


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

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


export const JsonNullValueInput = {
  JsonNull: JsonNull
} as const

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


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

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


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

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


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

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



/**
 * Field references
 */


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


/**
 * Reference to a field of type '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 'AttachmentStatus'
 */
export type EnumAttachmentStatusFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'AttachmentStatus'>
    


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


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


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

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

export const defineExtension = runtime.Extensions.defineExtension as unknown as runtime.Types.Extensions.ExtendsHook<"define", TypeMapCb, runtime.Types.Extensions.DefaultArgs>
export type DefaultPrismaClient = PrismaClient
export type ErrorFormat = 'pretty' | 'colorless' | 'minimal'
export type PrismaClientOptions = ({
  /**
   * Instance of a Driver Adapter, e.g., like one provided by `@prisma/adapter-pg`.
   */
  adapter: runtime.SqlDriverAdapterFactory
  accelerateUrl?: never
} | {
  /**
   * Prisma Accelerate URL allowing the client to connect through Accelerate instead of a direct database.
   */
  accelerateUrl: string
  adapter?: never
}) & {
  /**
   * @default "colorless"
   */
  errorFormat?: ErrorFormat
  /**
   * @example
   * ```
   * // Shorthand for `emit: 'stdout'`
   * log: ['query', 'info', 'warn', 'error']
   * 
   * // Emit as events only
   * log: [
   *   { emit: 'event', level: 'query' },
   *   { emit: 'event', level: 'info' },
   *   { emit: 'event', level: 'warn' }
   *   { emit: 'event', level: 'error' }
   * ]
   * 
   * / Emit as events and log to stdout
   * og: [
   *  { emit: 'stdout', level: 'query' },
   *  { emit: 'stdout', level: 'info' },
   *  { emit: 'stdout', level: 'warn' }
   *  { emit: 'stdout', level: 'error' }
   * 
   * ```
   * Read more in our [docs](https://pris.ly/d/logging).
   */
  log?: (LogLevel | LogDefinition)[]
  /**
   * The default values for transactionOptions
   * maxWait ?= 2000
   * timeout ?= 5000
   */
  transactionOptions?: {
    maxWait?: number
    timeout?: number
    isolationLevel?: TransactionIsolationLevel
  }
  /**
   * Global configuration for omitting model fields by default.
   * 
   * @example
   * ```
   * const prisma = new PrismaClient({
   *   omit: {
   *     user: {
   *       password: true
   *     }
   *   }
   * })
   * ```
   */
  omit?: GlobalOmitConfig
  /**
   * SQL commenter plugins that add metadata to SQL queries as comments.
   * Comments follow the sqlcommenter format: https://google.github.io/sqlcommenter/
   * 
   * @example
   * ```
   * const prisma = new PrismaClient({
   *   adapter,
   *   comments: [
   *     traceContext(),
   *     queryInsights(),
   *   ],
   * })
   * ```
   */
  comments?: runtime.SqlCommenterPlugin[]
}
export type GlobalOmitConfig = {
  users?: Prisma.UsersOmit
  userModuleAccess?: Prisma.userModuleAccessOmit
  employees?: Prisma.EmployeesOmit
  leaveRequests?: Prisma.LeaveRequestsOmit
  leaveRequestsArchive?: Prisma.LeaveRequestsArchiveOmit
  timesheets?: Prisma.TimesheetsOmit
  timesheetsArchive?: Prisma.TimesheetsArchiveOmit
  schedulePresets?: Prisma.SchedulePresetsOmit
  schedulePresetShifts?: Prisma.SchedulePresetShiftsOmit
  shifts?: Prisma.ShiftsOmit
  shiftsArchive?: Prisma.ShiftsArchiveOmit
  bankCodes?: Prisma.BankCodesOmit
  expenses?: Prisma.ExpensesOmit
  expensesArchive?: Prisma.ExpensesArchiveOmit
  oAuthSessions?: Prisma.OAuthSessionsOmit
  sessions?: Prisma.SessionsOmit
  blobs?: Prisma.BlobsOmit
  attachments?: Prisma.AttachmentsOmit
  attachmentVariants?: Prisma.AttachmentVariantsOmit
  preferences?: Prisma.PreferencesOmit
  paidTimeOff?: Prisma.PaidTimeOffOmit
  payPeriods?: Prisma.PayPeriodsOmit
}

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

