import * as z from 'zod';
import type { Prisma } from '../../../generated/prisma';
import { PatientArgsObjectSchema as PatientArgsObjectSchema } from './PatientArgs.schema';
import { UserArgsObjectSchema as UserArgsObjectSchema } from './UserArgs.schema';
import { StaffArgsObjectSchema as StaffArgsObjectSchema } from './StaffArgs.schema';
import { AppointmentProcedureFindManySchema as AppointmentProcedureFindManySchema } from '../findManyAppointmentProcedure.schema';
import { ClaimFindManySchema as ClaimFindManySchema } from '../findManyClaim.schema';
import { AppointmentFileFindManySchema as AppointmentFileFindManySchema } from '../findManyAppointmentFile.schema';
import { AppointmentCountOutputTypeArgsObjectSchema as AppointmentCountOutputTypeArgsObjectSchema } from './AppointmentCountOutputTypeArgs.schema'

const makeSchema = () => z.object({
  patient: z.union([z.boolean(), z.lazy(() => PatientArgsObjectSchema)]).optional(),
  user: z.union([z.boolean(), z.lazy(() => UserArgsObjectSchema)]).optional(),
  staff: z.union([z.boolean(), z.lazy(() => StaffArgsObjectSchema)]).optional(),
  procedures: z.union([z.boolean(), z.lazy(() => AppointmentProcedureFindManySchema)]).optional(),
  claims: z.union([z.boolean(), z.lazy(() => ClaimFindManySchema)]).optional(),
  files: z.union([z.boolean(), z.lazy(() => AppointmentFileFindManySchema)]).optional(),
  _count: z.union([z.boolean(), z.lazy(() => AppointmentCountOutputTypeArgsObjectSchema)]).optional()
}).strict();
export const AppointmentIncludeObjectSchema: z.ZodType<Prisma.AppointmentInclude> = makeSchema() as unknown as z.ZodType<Prisma.AppointmentInclude>;
export const AppointmentIncludeObjectZodSchema = makeSchema();
