import * as z from 'zod';
import type { Prisma } from '../../../generated/prisma';
import { NotificationTypesSchema } from '../enums/NotificationTypes.schema';
import { NestedEnumNotificationTypesWithAggregatesFilterObjectSchema as NestedEnumNotificationTypesWithAggregatesFilterObjectSchema } from './NestedEnumNotificationTypesWithAggregatesFilter.schema';
import { NestedIntFilterObjectSchema as NestedIntFilterObjectSchema } from './NestedIntFilter.schema';
import { NestedEnumNotificationTypesFilterObjectSchema as NestedEnumNotificationTypesFilterObjectSchema } from './NestedEnumNotificationTypesFilter.schema'

const makeSchema = () => z.object({
  equals: NotificationTypesSchema.optional(),
  in: NotificationTypesSchema.array().optional(),
  notIn: NotificationTypesSchema.array().optional(),
  not: z.union([NotificationTypesSchema, z.lazy(() => NestedEnumNotificationTypesWithAggregatesFilterObjectSchema)]).optional(),
  _count: z.lazy(() => NestedIntFilterObjectSchema).optional(),
  _min: z.lazy(() => NestedEnumNotificationTypesFilterObjectSchema).optional(),
  _max: z.lazy(() => NestedEnumNotificationTypesFilterObjectSchema).optional()
}).strict();
export const EnumNotificationTypesWithAggregatesFilterObjectSchema: z.ZodType<Prisma.EnumNotificationTypesWithAggregatesFilter> = makeSchema() as unknown as z.ZodType<Prisma.EnumNotificationTypesWithAggregatesFilter>;
export const EnumNotificationTypesWithAggregatesFilterObjectZodSchema = makeSchema();
