import type { Prisma } from '../../generated/prisma';
import * as z from 'zod';
import { PatientConversationIncludeObjectSchema as PatientConversationIncludeObjectSchema } from './objects/PatientConversationInclude.schema';
import { PatientConversationOrderByWithRelationInputObjectSchema as PatientConversationOrderByWithRelationInputObjectSchema } from './objects/PatientConversationOrderByWithRelationInput.schema';
import { PatientConversationWhereInputObjectSchema as PatientConversationWhereInputObjectSchema } from './objects/PatientConversationWhereInput.schema';
import { PatientConversationWhereUniqueInputObjectSchema as PatientConversationWhereUniqueInputObjectSchema } from './objects/PatientConversationWhereUniqueInput.schema';
import { PatientConversationScalarFieldEnumSchema } from './enums/PatientConversationScalarFieldEnum.schema';

// Select schema needs to be in file to prevent circular imports
//------------------------------------------------------

export const PatientConversationFindFirstSelectSchema: z.ZodType<Prisma.PatientConversationSelect> = z.object({
    id: z.boolean().optional(),
    patientId: z.boolean().optional(),
    userId: z.boolean().optional(),
    stage: z.boolean().optional(),
    aiHandoff: z.boolean().optional(),
    updatedAt: z.boolean().optional(),
    patient: z.boolean().optional(),
    user: z.boolean().optional()
  }).strict() as unknown as z.ZodType<Prisma.PatientConversationSelect>;

export const PatientConversationFindFirstSelectZodSchema = z.object({
    id: z.boolean().optional(),
    patientId: z.boolean().optional(),
    userId: z.boolean().optional(),
    stage: z.boolean().optional(),
    aiHandoff: z.boolean().optional(),
    updatedAt: z.boolean().optional(),
    patient: z.boolean().optional(),
    user: z.boolean().optional()
  }).strict();

export const PatientConversationFindFirstSchema: z.ZodType<Prisma.PatientConversationFindFirstArgs> = z.object({ select: PatientConversationFindFirstSelectSchema.optional(), include: z.lazy(() => PatientConversationIncludeObjectSchema.optional()), orderBy: z.union([PatientConversationOrderByWithRelationInputObjectSchema, PatientConversationOrderByWithRelationInputObjectSchema.array()]).optional(), where: PatientConversationWhereInputObjectSchema.optional(), cursor: PatientConversationWhereUniqueInputObjectSchema.optional(), take: z.number().optional(), skip: z.number().optional(), distinct: z.union([PatientConversationScalarFieldEnumSchema, PatientConversationScalarFieldEnumSchema.array()]).optional() }).strict() as unknown as z.ZodType<Prisma.PatientConversationFindFirstArgs>;

export const PatientConversationFindFirstZodSchema = z.object({ select: PatientConversationFindFirstSelectSchema.optional(), include: z.lazy(() => PatientConversationIncludeObjectSchema.optional()), orderBy: z.union([PatientConversationOrderByWithRelationInputObjectSchema, PatientConversationOrderByWithRelationInputObjectSchema.array()]).optional(), where: PatientConversationWhereInputObjectSchema.optional(), cursor: PatientConversationWhereUniqueInputObjectSchema.optional(), take: z.number().optional(), skip: z.number().optional(), distinct: z.union([PatientConversationScalarFieldEnumSchema, PatientConversationScalarFieldEnumSchema.array()]).optional() }).strict();