import * as z from 'zod';
import type { Prisma } from '../../../generated/prisma';
import { IntWithAggregatesFilterObjectSchema as IntWithAggregatesFilterObjectSchema } from './IntWithAggregatesFilter.schema';
import { IntNullableWithAggregatesFilterObjectSchema as IntNullableWithAggregatesFilterObjectSchema } from './IntNullableWithAggregatesFilter.schema';
import { EnumCommunicationChannelWithAggregatesFilterObjectSchema as EnumCommunicationChannelWithAggregatesFilterObjectSchema } from './EnumCommunicationChannelWithAggregatesFilter.schema';
import { CommunicationChannelSchema } from '../enums/CommunicationChannel.schema';
import { EnumCommunicationDirectionWithAggregatesFilterObjectSchema as EnumCommunicationDirectionWithAggregatesFilterObjectSchema } from './EnumCommunicationDirectionWithAggregatesFilter.schema';
import { CommunicationDirectionSchema } from '../enums/CommunicationDirection.schema';
import { EnumCommunicationStatusWithAggregatesFilterObjectSchema as EnumCommunicationStatusWithAggregatesFilterObjectSchema } from './EnumCommunicationStatusWithAggregatesFilter.schema';
import { CommunicationStatusSchema } from '../enums/CommunicationStatus.schema';
import { StringNullableWithAggregatesFilterObjectSchema as StringNullableWithAggregatesFilterObjectSchema } from './StringNullableWithAggregatesFilter.schema';
import { DateTimeWithAggregatesFilterObjectSchema as DateTimeWithAggregatesFilterObjectSchema } from './DateTimeWithAggregatesFilter.schema'

const communicationscalarwherewithaggregatesinputSchema = z.object({
  AND: z.union([z.lazy(() => CommunicationScalarWhereWithAggregatesInputObjectSchema), z.lazy(() => CommunicationScalarWhereWithAggregatesInputObjectSchema).array()]).optional(),
  OR: z.lazy(() => CommunicationScalarWhereWithAggregatesInputObjectSchema).array().optional(),
  NOT: z.union([z.lazy(() => CommunicationScalarWhereWithAggregatesInputObjectSchema), z.lazy(() => CommunicationScalarWhereWithAggregatesInputObjectSchema).array()]).optional(),
  id: z.union([z.lazy(() => IntWithAggregatesFilterObjectSchema), z.number().int()]).optional(),
  patientId: z.union([z.lazy(() => IntWithAggregatesFilterObjectSchema), z.number().int()]).optional(),
  userId: z.union([z.lazy(() => IntNullableWithAggregatesFilterObjectSchema), z.number().int()]).optional().nullable(),
  channel: z.union([z.lazy(() => EnumCommunicationChannelWithAggregatesFilterObjectSchema), CommunicationChannelSchema]).optional(),
  direction: z.union([z.lazy(() => EnumCommunicationDirectionWithAggregatesFilterObjectSchema), CommunicationDirectionSchema]).optional(),
  status: z.union([z.lazy(() => EnumCommunicationStatusWithAggregatesFilterObjectSchema), CommunicationStatusSchema]).optional(),
  body: z.union([z.lazy(() => StringNullableWithAggregatesFilterObjectSchema), z.string()]).optional().nullable(),
  callDuration: z.union([z.lazy(() => IntNullableWithAggregatesFilterObjectSchema), z.number().int()]).optional().nullable(),
  twilioSid: z.union([z.lazy(() => StringNullableWithAggregatesFilterObjectSchema), z.string()]).optional().nullable(),
  createdAt: z.union([z.lazy(() => DateTimeWithAggregatesFilterObjectSchema), z.coerce.date()]).optional()
}).strict();
export const CommunicationScalarWhereWithAggregatesInputObjectSchema: z.ZodType<Prisma.CommunicationScalarWhereWithAggregatesInput> = communicationscalarwherewithaggregatesinputSchema as unknown as z.ZodType<Prisma.CommunicationScalarWhereWithAggregatesInput>;
export const CommunicationScalarWhereWithAggregatesInputObjectZodSchema = communicationscalarwherewithaggregatesinputSchema;
