import * as z from 'zod';
import type { Prisma } from '../../../generated/prisma';
import { CommunicationChannelSchema } from '../enums/CommunicationChannel.schema';
import { NestedEnumCommunicationChannelWithAggregatesFilterObjectSchema as NestedEnumCommunicationChannelWithAggregatesFilterObjectSchema } from './NestedEnumCommunicationChannelWithAggregatesFilter.schema';
import { NestedIntFilterObjectSchema as NestedIntFilterObjectSchema } from './NestedIntFilter.schema';
import { NestedEnumCommunicationChannelFilterObjectSchema as NestedEnumCommunicationChannelFilterObjectSchema } from './NestedEnumCommunicationChannelFilter.schema'

const makeSchema = () => z.object({
  equals: CommunicationChannelSchema.optional(),
  in: CommunicationChannelSchema.array().optional(),
  notIn: CommunicationChannelSchema.array().optional(),
  not: z.union([CommunicationChannelSchema, z.lazy(() => NestedEnumCommunicationChannelWithAggregatesFilterObjectSchema)]).optional(),
  _count: z.lazy(() => NestedIntFilterObjectSchema).optional(),
  _min: z.lazy(() => NestedEnumCommunicationChannelFilterObjectSchema).optional(),
  _max: z.lazy(() => NestedEnumCommunicationChannelFilterObjectSchema).optional()
}).strict();
export const EnumCommunicationChannelWithAggregatesFilterObjectSchema: z.ZodType<Prisma.EnumCommunicationChannelWithAggregatesFilter> = makeSchema() as unknown as z.ZodType<Prisma.EnumCommunicationChannelWithAggregatesFilter>;
export const EnumCommunicationChannelWithAggregatesFilterObjectZodSchema = makeSchema();
