
/* !!! 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 = {
  codeDesjardins: 'codeDesjardins',
  customers: 'customers',
  dealers: 'dealers',
  employee_shift_template: 'employee_shift_template',
  employees: 'employees',
  expenses: 'expenses',
  hours_bank: 'hours_bank',
  mileage_bank: 'mileage_bank',
  shifts: 'shifts',
  shifts_of_template: 'shifts_of_template',
  sick_leave: 'sick_leave',
  time_sheet_periods: 'time_sheet_periods',
  time_sheet_template: 'time_sheet_template',
  time_sheets: 'time_sheets',
  users: 'users',
  vacation_leave: 'vacation_leave'
} 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: "codeDesjardins" | "customers" | "dealers" | "employee_shift_template" | "employees" | "expenses" | "hours_bank" | "mileage_bank" | "shifts" | "shifts_of_template" | "sick_leave" | "time_sheet_periods" | "time_sheet_template" | "time_sheets" | "users" | "vacation_leave"
    txIsolationLevel: TransactionIsolationLevel
  }
  model: {
    codeDesjardins: {
      payload: Prisma.$codeDesjardinsPayload<ExtArgs>
      fields: Prisma.codeDesjardinsFieldRefs
      operations: {
        findUnique: {
          args: Prisma.codeDesjardinsFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$codeDesjardinsPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.codeDesjardinsFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$codeDesjardinsPayload>
        }
        findFirst: {
          args: Prisma.codeDesjardinsFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$codeDesjardinsPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.codeDesjardinsFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$codeDesjardinsPayload>
        }
        findMany: {
          args: Prisma.codeDesjardinsFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$codeDesjardinsPayload>[]
        }
        create: {
          args: Prisma.codeDesjardinsCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$codeDesjardinsPayload>
        }
        createMany: {
          args: Prisma.codeDesjardinsCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.codeDesjardinsCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$codeDesjardinsPayload>[]
        }
        delete: {
          args: Prisma.codeDesjardinsDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$codeDesjardinsPayload>
        }
        update: {
          args: Prisma.codeDesjardinsUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$codeDesjardinsPayload>
        }
        deleteMany: {
          args: Prisma.codeDesjardinsDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.codeDesjardinsUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.codeDesjardinsUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$codeDesjardinsPayload>[]
        }
        upsert: {
          args: Prisma.codeDesjardinsUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$codeDesjardinsPayload>
        }
        aggregate: {
          args: Prisma.CodeDesjardinsAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateCodeDesjardins>
        }
        groupBy: {
          args: Prisma.codeDesjardinsGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.CodeDesjardinsGroupByOutputType>[]
        }
        count: {
          args: Prisma.codeDesjardinsCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.CodeDesjardinsCountAggregateOutputType> | number
        }
      }
    }
    customers: {
      payload: Prisma.$customersPayload<ExtArgs>
      fields: Prisma.customersFieldRefs
      operations: {
        findUnique: {
          args: Prisma.customersFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$customersPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.customersFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$customersPayload>
        }
        findFirst: {
          args: Prisma.customersFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$customersPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.customersFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$customersPayload>
        }
        findMany: {
          args: Prisma.customersFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$customersPayload>[]
        }
        create: {
          args: Prisma.customersCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$customersPayload>
        }
        createMany: {
          args: Prisma.customersCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.customersCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$customersPayload>[]
        }
        delete: {
          args: Prisma.customersDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$customersPayload>
        }
        update: {
          args: Prisma.customersUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$customersPayload>
        }
        deleteMany: {
          args: Prisma.customersDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.customersUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.customersUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$customersPayload>[]
        }
        upsert: {
          args: Prisma.customersUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$customersPayload>
        }
        aggregate: {
          args: Prisma.CustomersAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateCustomers>
        }
        groupBy: {
          args: Prisma.customersGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.CustomersGroupByOutputType>[]
        }
        count: {
          args: Prisma.customersCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.CustomersCountAggregateOutputType> | number
        }
      }
    }
    dealers: {
      payload: Prisma.$dealersPayload<ExtArgs>
      fields: Prisma.dealersFieldRefs
      operations: {
        findUnique: {
          args: Prisma.dealersFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$dealersPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.dealersFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$dealersPayload>
        }
        findFirst: {
          args: Prisma.dealersFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$dealersPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.dealersFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$dealersPayload>
        }
        findMany: {
          args: Prisma.dealersFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$dealersPayload>[]
        }
        create: {
          args: Prisma.dealersCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$dealersPayload>
        }
        createMany: {
          args: Prisma.dealersCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.dealersCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$dealersPayload>[]
        }
        delete: {
          args: Prisma.dealersDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$dealersPayload>
        }
        update: {
          args: Prisma.dealersUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$dealersPayload>
        }
        deleteMany: {
          args: Prisma.dealersDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.dealersUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.dealersUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$dealersPayload>[]
        }
        upsert: {
          args: Prisma.dealersUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$dealersPayload>
        }
        aggregate: {
          args: Prisma.DealersAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateDealers>
        }
        groupBy: {
          args: Prisma.dealersGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.DealersGroupByOutputType>[]
        }
        count: {
          args: Prisma.dealersCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.DealersCountAggregateOutputType> | number
        }
      }
    }
    employee_shift_template: {
      payload: Prisma.$employee_shift_templatePayload<ExtArgs>
      fields: Prisma.employee_shift_templateFieldRefs
      operations: {
        findUnique: {
          args: Prisma.employee_shift_templateFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$employee_shift_templatePayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.employee_shift_templateFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$employee_shift_templatePayload>
        }
        findFirst: {
          args: Prisma.employee_shift_templateFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$employee_shift_templatePayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.employee_shift_templateFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$employee_shift_templatePayload>
        }
        findMany: {
          args: Prisma.employee_shift_templateFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$employee_shift_templatePayload>[]
        }
        create: {
          args: Prisma.employee_shift_templateCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$employee_shift_templatePayload>
        }
        createMany: {
          args: Prisma.employee_shift_templateCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.employee_shift_templateCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$employee_shift_templatePayload>[]
        }
        delete: {
          args: Prisma.employee_shift_templateDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$employee_shift_templatePayload>
        }
        update: {
          args: Prisma.employee_shift_templateUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$employee_shift_templatePayload>
        }
        deleteMany: {
          args: Prisma.employee_shift_templateDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.employee_shift_templateUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.employee_shift_templateUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$employee_shift_templatePayload>[]
        }
        upsert: {
          args: Prisma.employee_shift_templateUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$employee_shift_templatePayload>
        }
        aggregate: {
          args: Prisma.Employee_shift_templateAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateEmployee_shift_template>
        }
        groupBy: {
          args: Prisma.employee_shift_templateGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.Employee_shift_templateGroupByOutputType>[]
        }
        count: {
          args: Prisma.employee_shift_templateCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.Employee_shift_templateCountAggregateOutputType> | 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
        }
      }
    }
    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
        }
      }
    }
    hours_bank: {
      payload: Prisma.$hours_bankPayload<ExtArgs>
      fields: Prisma.hours_bankFieldRefs
      operations: {
        findUnique: {
          args: Prisma.hours_bankFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$hours_bankPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.hours_bankFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$hours_bankPayload>
        }
        findFirst: {
          args: Prisma.hours_bankFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$hours_bankPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.hours_bankFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$hours_bankPayload>
        }
        findMany: {
          args: Prisma.hours_bankFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$hours_bankPayload>[]
        }
        create: {
          args: Prisma.hours_bankCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$hours_bankPayload>
        }
        createMany: {
          args: Prisma.hours_bankCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.hours_bankCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$hours_bankPayload>[]
        }
        delete: {
          args: Prisma.hours_bankDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$hours_bankPayload>
        }
        update: {
          args: Prisma.hours_bankUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$hours_bankPayload>
        }
        deleteMany: {
          args: Prisma.hours_bankDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.hours_bankUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.hours_bankUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$hours_bankPayload>[]
        }
        upsert: {
          args: Prisma.hours_bankUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$hours_bankPayload>
        }
        aggregate: {
          args: Prisma.Hours_bankAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateHours_bank>
        }
        groupBy: {
          args: Prisma.hours_bankGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.Hours_bankGroupByOutputType>[]
        }
        count: {
          args: Prisma.hours_bankCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.Hours_bankCountAggregateOutputType> | number
        }
      }
    }
    mileage_bank: {
      payload: Prisma.$mileage_bankPayload<ExtArgs>
      fields: Prisma.mileage_bankFieldRefs
      operations: {
        findUnique: {
          args: Prisma.mileage_bankFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$mileage_bankPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.mileage_bankFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$mileage_bankPayload>
        }
        findFirst: {
          args: Prisma.mileage_bankFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$mileage_bankPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.mileage_bankFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$mileage_bankPayload>
        }
        findMany: {
          args: Prisma.mileage_bankFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$mileage_bankPayload>[]
        }
        create: {
          args: Prisma.mileage_bankCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$mileage_bankPayload>
        }
        createMany: {
          args: Prisma.mileage_bankCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.mileage_bankCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$mileage_bankPayload>[]
        }
        delete: {
          args: Prisma.mileage_bankDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$mileage_bankPayload>
        }
        update: {
          args: Prisma.mileage_bankUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$mileage_bankPayload>
        }
        deleteMany: {
          args: Prisma.mileage_bankDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.mileage_bankUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.mileage_bankUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$mileage_bankPayload>[]
        }
        upsert: {
          args: Prisma.mileage_bankUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$mileage_bankPayload>
        }
        aggregate: {
          args: Prisma.Mileage_bankAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateMileage_bank>
        }
        groupBy: {
          args: Prisma.mileage_bankGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.Mileage_bankGroupByOutputType>[]
        }
        count: {
          args: Prisma.mileage_bankCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.Mileage_bankCountAggregateOutputType> | 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
        }
      }
    }
    shifts_of_template: {
      payload: Prisma.$shifts_of_templatePayload<ExtArgs>
      fields: Prisma.shifts_of_templateFieldRefs
      operations: {
        findUnique: {
          args: Prisma.shifts_of_templateFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$shifts_of_templatePayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.shifts_of_templateFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$shifts_of_templatePayload>
        }
        findFirst: {
          args: Prisma.shifts_of_templateFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$shifts_of_templatePayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.shifts_of_templateFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$shifts_of_templatePayload>
        }
        findMany: {
          args: Prisma.shifts_of_templateFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$shifts_of_templatePayload>[]
        }
        create: {
          args: Prisma.shifts_of_templateCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$shifts_of_templatePayload>
        }
        createMany: {
          args: Prisma.shifts_of_templateCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.shifts_of_templateCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$shifts_of_templatePayload>[]
        }
        delete: {
          args: Prisma.shifts_of_templateDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$shifts_of_templatePayload>
        }
        update: {
          args: Prisma.shifts_of_templateUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$shifts_of_templatePayload>
        }
        deleteMany: {
          args: Prisma.shifts_of_templateDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.shifts_of_templateUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.shifts_of_templateUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$shifts_of_templatePayload>[]
        }
        upsert: {
          args: Prisma.shifts_of_templateUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$shifts_of_templatePayload>
        }
        aggregate: {
          args: Prisma.Shifts_of_templateAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateShifts_of_template>
        }
        groupBy: {
          args: Prisma.shifts_of_templateGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.Shifts_of_templateGroupByOutputType>[]
        }
        count: {
          args: Prisma.shifts_of_templateCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.Shifts_of_templateCountAggregateOutputType> | number
        }
      }
    }
    sick_leave: {
      payload: Prisma.$sick_leavePayload<ExtArgs>
      fields: Prisma.sick_leaveFieldRefs
      operations: {
        findUnique: {
          args: Prisma.sick_leaveFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$sick_leavePayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.sick_leaveFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$sick_leavePayload>
        }
        findFirst: {
          args: Prisma.sick_leaveFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$sick_leavePayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.sick_leaveFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$sick_leavePayload>
        }
        findMany: {
          args: Prisma.sick_leaveFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$sick_leavePayload>[]
        }
        create: {
          args: Prisma.sick_leaveCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$sick_leavePayload>
        }
        createMany: {
          args: Prisma.sick_leaveCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.sick_leaveCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$sick_leavePayload>[]
        }
        delete: {
          args: Prisma.sick_leaveDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$sick_leavePayload>
        }
        update: {
          args: Prisma.sick_leaveUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$sick_leavePayload>
        }
        deleteMany: {
          args: Prisma.sick_leaveDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.sick_leaveUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.sick_leaveUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$sick_leavePayload>[]
        }
        upsert: {
          args: Prisma.sick_leaveUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$sick_leavePayload>
        }
        aggregate: {
          args: Prisma.Sick_leaveAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateSick_leave>
        }
        groupBy: {
          args: Prisma.sick_leaveGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.Sick_leaveGroupByOutputType>[]
        }
        count: {
          args: Prisma.sick_leaveCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.Sick_leaveCountAggregateOutputType> | number
        }
      }
    }
    time_sheet_periods: {
      payload: Prisma.$time_sheet_periodsPayload<ExtArgs>
      fields: Prisma.time_sheet_periodsFieldRefs
      operations: {
        findUnique: {
          args: Prisma.time_sheet_periodsFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$time_sheet_periodsPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.time_sheet_periodsFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$time_sheet_periodsPayload>
        }
        findFirst: {
          args: Prisma.time_sheet_periodsFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$time_sheet_periodsPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.time_sheet_periodsFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$time_sheet_periodsPayload>
        }
        findMany: {
          args: Prisma.time_sheet_periodsFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$time_sheet_periodsPayload>[]
        }
        create: {
          args: Prisma.time_sheet_periodsCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$time_sheet_periodsPayload>
        }
        createMany: {
          args: Prisma.time_sheet_periodsCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.time_sheet_periodsCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$time_sheet_periodsPayload>[]
        }
        delete: {
          args: Prisma.time_sheet_periodsDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$time_sheet_periodsPayload>
        }
        update: {
          args: Prisma.time_sheet_periodsUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$time_sheet_periodsPayload>
        }
        deleteMany: {
          args: Prisma.time_sheet_periodsDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.time_sheet_periodsUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.time_sheet_periodsUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$time_sheet_periodsPayload>[]
        }
        upsert: {
          args: Prisma.time_sheet_periodsUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$time_sheet_periodsPayload>
        }
        aggregate: {
          args: Prisma.Time_sheet_periodsAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateTime_sheet_periods>
        }
        groupBy: {
          args: Prisma.time_sheet_periodsGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.Time_sheet_periodsGroupByOutputType>[]
        }
        count: {
          args: Prisma.time_sheet_periodsCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.Time_sheet_periodsCountAggregateOutputType> | number
        }
      }
    }
    time_sheet_template: {
      payload: Prisma.$time_sheet_templatePayload<ExtArgs>
      fields: Prisma.time_sheet_templateFieldRefs
      operations: {
        findUnique: {
          args: Prisma.time_sheet_templateFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$time_sheet_templatePayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.time_sheet_templateFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$time_sheet_templatePayload>
        }
        findFirst: {
          args: Prisma.time_sheet_templateFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$time_sheet_templatePayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.time_sheet_templateFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$time_sheet_templatePayload>
        }
        findMany: {
          args: Prisma.time_sheet_templateFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$time_sheet_templatePayload>[]
        }
        create: {
          args: Prisma.time_sheet_templateCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$time_sheet_templatePayload>
        }
        createMany: {
          args: Prisma.time_sheet_templateCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.time_sheet_templateCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$time_sheet_templatePayload>[]
        }
        delete: {
          args: Prisma.time_sheet_templateDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$time_sheet_templatePayload>
        }
        update: {
          args: Prisma.time_sheet_templateUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$time_sheet_templatePayload>
        }
        deleteMany: {
          args: Prisma.time_sheet_templateDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.time_sheet_templateUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.time_sheet_templateUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$time_sheet_templatePayload>[]
        }
        upsert: {
          args: Prisma.time_sheet_templateUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$time_sheet_templatePayload>
        }
        aggregate: {
          args: Prisma.Time_sheet_templateAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateTime_sheet_template>
        }
        groupBy: {
          args: Prisma.time_sheet_templateGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.Time_sheet_templateGroupByOutputType>[]
        }
        count: {
          args: Prisma.time_sheet_templateCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.Time_sheet_templateCountAggregateOutputType> | number
        }
      }
    }
    time_sheets: {
      payload: Prisma.$time_sheetsPayload<ExtArgs>
      fields: Prisma.time_sheetsFieldRefs
      operations: {
        findUnique: {
          args: Prisma.time_sheetsFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$time_sheetsPayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.time_sheetsFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$time_sheetsPayload>
        }
        findFirst: {
          args: Prisma.time_sheetsFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$time_sheetsPayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.time_sheetsFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$time_sheetsPayload>
        }
        findMany: {
          args: Prisma.time_sheetsFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$time_sheetsPayload>[]
        }
        create: {
          args: Prisma.time_sheetsCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$time_sheetsPayload>
        }
        createMany: {
          args: Prisma.time_sheetsCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.time_sheetsCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$time_sheetsPayload>[]
        }
        delete: {
          args: Prisma.time_sheetsDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$time_sheetsPayload>
        }
        update: {
          args: Prisma.time_sheetsUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$time_sheetsPayload>
        }
        deleteMany: {
          args: Prisma.time_sheetsDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.time_sheetsUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.time_sheetsUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$time_sheetsPayload>[]
        }
        upsert: {
          args: Prisma.time_sheetsUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$time_sheetsPayload>
        }
        aggregate: {
          args: Prisma.Time_sheetsAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateTime_sheets>
        }
        groupBy: {
          args: Prisma.time_sheetsGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.Time_sheetsGroupByOutputType>[]
        }
        count: {
          args: Prisma.time_sheetsCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.Time_sheetsCountAggregateOutputType> | number
        }
      }
    }
    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
        }
      }
    }
    vacation_leave: {
      payload: Prisma.$vacation_leavePayload<ExtArgs>
      fields: Prisma.vacation_leaveFieldRefs
      operations: {
        findUnique: {
          args: Prisma.vacation_leaveFindUniqueArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$vacation_leavePayload> | null
        }
        findUniqueOrThrow: {
          args: Prisma.vacation_leaveFindUniqueOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$vacation_leavePayload>
        }
        findFirst: {
          args: Prisma.vacation_leaveFindFirstArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$vacation_leavePayload> | null
        }
        findFirstOrThrow: {
          args: Prisma.vacation_leaveFindFirstOrThrowArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$vacation_leavePayload>
        }
        findMany: {
          args: Prisma.vacation_leaveFindManyArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$vacation_leavePayload>[]
        }
        create: {
          args: Prisma.vacation_leaveCreateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$vacation_leavePayload>
        }
        createMany: {
          args: Prisma.vacation_leaveCreateManyArgs<ExtArgs>
          result: BatchPayload
        }
        createManyAndReturn: {
          args: Prisma.vacation_leaveCreateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$vacation_leavePayload>[]
        }
        delete: {
          args: Prisma.vacation_leaveDeleteArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$vacation_leavePayload>
        }
        update: {
          args: Prisma.vacation_leaveUpdateArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$vacation_leavePayload>
        }
        deleteMany: {
          args: Prisma.vacation_leaveDeleteManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateMany: {
          args: Prisma.vacation_leaveUpdateManyArgs<ExtArgs>
          result: BatchPayload
        }
        updateManyAndReturn: {
          args: Prisma.vacation_leaveUpdateManyAndReturnArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$vacation_leavePayload>[]
        }
        upsert: {
          args: Prisma.vacation_leaveUpsertArgs<ExtArgs>
          result: runtime.Types.Utils.PayloadToResult<Prisma.$vacation_leavePayload>
        }
        aggregate: {
          args: Prisma.Vacation_leaveAggregateArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.AggregateVacation_leave>
        }
        groupBy: {
          args: Prisma.vacation_leaveGroupByArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.Vacation_leaveGroupByOutputType>[]
        }
        count: {
          args: Prisma.vacation_leaveCountArgs<ExtArgs>
          result: runtime.Types.Utils.Optional<Prisma.Vacation_leaveCountAggregateOutputType> | 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 CodeDesjardinsScalarFieldEnum = {
  id: 'id',
  code: 'code',
  label: 'label',
  description: 'description'
} as const

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


export const CustomersScalarFieldEnum = {
  id: 'id',
  user_id: 'user_id',
  email: 'email',
  first_name: 'first_name',
  last_name: 'last_name',
  phone_number: 'phone_number',
  address: 'address',
  created_at: 'created_at',
  updated_at: 'updated_at',
  created_by: 'created_by'
} as const

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


export const DealersScalarFieldEnum = {
  id: 'id',
  user_id: 'user_id',
  email: 'email',
  first_name: 'first_name',
  last_name: 'last_name',
  phone_number: 'phone_number',
  created_at: 'created_at',
  updated_at: 'updated_at',
  created_by: 'created_by'
} as const

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


export const Employee_shift_templateScalarFieldEnum = {
  id: 'id',
  employee_id: 'employee_id',
  day_of_the_week: 'day_of_the_week',
  start_time: 'start_time',
  end_time: 'end_time',
  created_at: 'created_at',
  updated_at: 'updated_at'
} as const

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


export const EmployeesScalarFieldEnum = {
  id: 'id',
  user_id: 'user_id',
  employee_number: 'employee_number',
  email: 'email',
  first_name: 'first_name',
  last_name: 'last_name',
  phone_number: 'phone_number',
  job_title: 'job_title',
  company: 'company',
  supervisor: 'supervisor',
  is_supervisor: 'is_supervisor',
  onboarding: 'onboarding',
  offboarding: 'offboarding',
  regular_hours_day: 'regular_hours_day',
  hours_bank_max: 'hours_bank_max',
  created_at: 'created_at',
  updated_at: 'updated_at',
  created_by: 'created_by'
} as const

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


export const ExpensesScalarFieldEnum = {
  id: 'id',
  time_sheet_id: 'time_sheet_id',
  date: 'date',
  code: 'code',
  value: 'value',
  description: 'description',
  evidence_id: 'evidence_id',
  status: 'status',
  created_at: 'created_at',
  updated_at: 'updated_at',
  supervisor_note: 'supervisor_note'
} as const

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


export const Hours_bankScalarFieldEnum = {
  id: 'id',
  employee_id: 'employee_id',
  hours: 'hours',
  created_at: 'created_at',
  updated_at: 'updated_at'
} as const

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


export const Mileage_bankScalarFieldEnum = {
  id: 'id',
  employee_id: 'employee_id',
  mileage: 'mileage',
  year: 'year'
} as const

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


export const ShiftsScalarFieldEnum = {
  id: 'id',
  time_sheet_id: 'time_sheet_id',
  code: 'code',
  type: 'type',
  date: 'date',
  start_time: 'start_time',
  end_time: 'end_time',
  comment: 'comment',
  status: 'status',
  created_at: 'created_at',
  updated_at: 'updated_at',
  supervisor_note: 'supervisor_note'
} as const

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


export const Shifts_of_templateScalarFieldEnum = {
  id: 'id',
  model_id: 'model_id',
  day_of_the_week: 'day_of_the_week',
  start_time: 'start_time',
  end_time: 'end_time',
  created_at: 'created_at',
  updated_at: 'updated_at'
} as const

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


export const Sick_leaveScalarFieldEnum = {
  id: 'id',
  employee_id: 'employee_id',
  accumulated: 'accumulated',
  consumed: 'consumed',
  year: 'year',
  created_at: 'created_at',
  updated_at: 'updated_at'
} as const

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


export const Time_sheet_periodsScalarFieldEnum = {
  id: 'id',
  start_date: 'start_date',
  end_date: 'end_date',
  payment_date: 'payment_date',
  period_number: 'period_number',
  year: 'year'
} as const

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


export const Time_sheet_templateScalarFieldEnum = {
  id: 'id',
  title: 'title',
  description: 'description',
  created_at: 'created_at',
  updated_at: 'updated_at'
} as const

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


export const Time_sheetsScalarFieldEnum = {
  id: 'id',
  employee_id: 'employee_id',
  start_date: 'start_date',
  end_date: 'end_date',
  status: 'status',
  banked_hours: 'banked_hours',
  consumed_vacation: 'consumed_vacation',
  consumed_sick: 'consumed_sick',
  period_id: 'period_id',
  period_number: 'period_number',
  created_at: 'created_at',
  updated_at: 'updated_at',
  blocked_week: 'blocked_week'
} as const

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


export const UsersScalarFieldEnum = {
  id: 'id',
  email: 'email',
  password: 'password',
  type: 'type',
  role: 'role',
  is_verified: 'is_verified',
  verification_token: 'verification_token',
  otp_token: 'otp_token',
  refresh_token: 'refresh_token',
  created_at: 'created_at',
  updated_at: 'updated_at',
  created_by: 'created_by',
  last_login: 'last_login'
} as const

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


export const Vacation_leaveScalarFieldEnum = {
  id: 'id',
  employee_id: 'employee_id',
  accumulated: 'accumulated',
  consumed: 'consumed',
  created_at: 'created_at',
  updated_at: 'updated_at',
  start_year: 'start_year',
  end_year: 'end_year',
  max_hours_per_year: 'max_hours_per_year'
} as const

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


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

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


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]



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


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


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


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

/**
 * 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 = {
  codeDesjardins?: Prisma.codeDesjardinsOmit
  customers?: Prisma.customersOmit
  dealers?: Prisma.dealersOmit
  employee_shift_template?: Prisma.employee_shift_templateOmit
  employees?: Prisma.employeesOmit
  expenses?: Prisma.expensesOmit
  hours_bank?: Prisma.hours_bankOmit
  mileage_bank?: Prisma.mileage_bankOmit
  shifts?: Prisma.shiftsOmit
  shifts_of_template?: Prisma.shifts_of_templateOmit
  sick_leave?: Prisma.sick_leaveOmit
  time_sheet_periods?: Prisma.time_sheet_periodsOmit
  time_sheet_template?: Prisma.time_sheet_templateOmit
  time_sheets?: Prisma.time_sheetsOmit
  users?: Prisma.usersOmit
  vacation_leave?: Prisma.vacation_leaveOmit
}

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

