import * as z from 'zod';
import type { Prisma } from '../../../generated/prisma';
import { ProcedureSourceSchema } from '../enums/ProcedureSource.schema';
import { NestedEnumProcedureSourceWithAggregatesFilterObjectSchema as NestedEnumProcedureSourceWithAggregatesFilterObjectSchema } from './NestedEnumProcedureSourceWithAggregatesFilter.schema';
import { NestedIntFilterObjectSchema as NestedIntFilterObjectSchema } from './NestedIntFilter.schema';
import { NestedEnumProcedureSourceFilterObjectSchema as NestedEnumProcedureSourceFilterObjectSchema } from './NestedEnumProcedureSourceFilter.schema'

const makeSchema = () => z.object({
  equals: ProcedureSourceSchema.optional(),
  in: ProcedureSourceSchema.array().optional(),
  notIn: ProcedureSourceSchema.array().optional(),
  not: z.union([ProcedureSourceSchema, z.lazy(() => NestedEnumProcedureSourceWithAggregatesFilterObjectSchema)]).optional(),
  _count: z.lazy(() => NestedIntFilterObjectSchema).optional(),
  _min: z.lazy(() => NestedEnumProcedureSourceFilterObjectSchema).optional(),
  _max: z.lazy(() => NestedEnumProcedureSourceFilterObjectSchema).optional()
}).strict();
export const EnumProcedureSourceWithAggregatesFilterObjectSchema: z.ZodType<Prisma.EnumProcedureSourceWithAggregatesFilter> = makeSchema() as unknown as z.ZodType<Prisma.EnumProcedureSourceWithAggregatesFilter>;
export const EnumProcedureSourceWithAggregatesFilterObjectZodSchema = makeSchema();
