import * as z from 'zod';
import type { Prisma } from '../../../generated/prisma';
import { CommunicationStatusSchema } from '../enums/CommunicationStatus.schema';
import { NestedEnumCommunicationStatusWithAggregatesFilterObjectSchema as NestedEnumCommunicationStatusWithAggregatesFilterObjectSchema } from './NestedEnumCommunicationStatusWithAggregatesFilter.schema';
import { NestedIntFilterObjectSchema as NestedIntFilterObjectSchema } from './NestedIntFilter.schema';
import { NestedEnumCommunicationStatusFilterObjectSchema as NestedEnumCommunicationStatusFilterObjectSchema } from './NestedEnumCommunicationStatusFilter.schema'

const makeSchema = () => z.object({
  equals: CommunicationStatusSchema.optional(),
  in: CommunicationStatusSchema.array().optional(),
  notIn: CommunicationStatusSchema.array().optional(),
  not: z.union([CommunicationStatusSchema, z.lazy(() => NestedEnumCommunicationStatusWithAggregatesFilterObjectSchema)]).optional(),
  _count: z.lazy(() => NestedIntFilterObjectSchema).optional(),
  _min: z.lazy(() => NestedEnumCommunicationStatusFilterObjectSchema).optional(),
  _max: z.lazy(() => NestedEnumCommunicationStatusFilterObjectSchema).optional()
}).strict();
export const EnumCommunicationStatusWithAggregatesFilterObjectSchema: z.ZodType<Prisma.EnumCommunicationStatusWithAggregatesFilter> = makeSchema() as unknown as z.ZodType<Prisma.EnumCommunicationStatusWithAggregatesFilter>;
export const EnumCommunicationStatusWithAggregatesFilterObjectZodSchema = makeSchema();
