import type { Prisma } from '../../generated/prisma';
import * as z from 'zod';
import { AppointmentProcedureIncludeObjectSchema as AppointmentProcedureIncludeObjectSchema } from './objects/AppointmentProcedureInclude.schema';
import { AppointmentProcedureOrderByWithRelationInputObjectSchema as AppointmentProcedureOrderByWithRelationInputObjectSchema } from './objects/AppointmentProcedureOrderByWithRelationInput.schema';
import { AppointmentProcedureWhereInputObjectSchema as AppointmentProcedureWhereInputObjectSchema } from './objects/AppointmentProcedureWhereInput.schema';
import { AppointmentProcedureWhereUniqueInputObjectSchema as AppointmentProcedureWhereUniqueInputObjectSchema } from './objects/AppointmentProcedureWhereUniqueInput.schema';
import { AppointmentProcedureScalarFieldEnumSchema } from './enums/AppointmentProcedureScalarFieldEnum.schema';

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

export const AppointmentProcedureFindFirstSelectSchema: z.ZodType<Prisma.AppointmentProcedureSelect> = z.object({
    id: z.boolean().optional(),
    appointmentId: z.boolean().optional(),
    patientId: z.boolean().optional(),
    npiProviderId: z.boolean().optional(),
    procedureCode: z.boolean().optional(),
    procedureLabel: z.boolean().optional(),
    fee: z.boolean().optional(),
    category: z.boolean().optional(),
    toothNumber: z.boolean().optional(),
    toothSurface: z.boolean().optional(),
    oralCavityArea: z.boolean().optional(),
    source: z.boolean().optional(),
    comboKey: z.boolean().optional(),
    createdAt: z.boolean().optional(),
    appointment: z.boolean().optional(),
    patient: z.boolean().optional(),
    npiProvider: z.boolean().optional()
  }).strict() as unknown as z.ZodType<Prisma.AppointmentProcedureSelect>;

export const AppointmentProcedureFindFirstSelectZodSchema = z.object({
    id: z.boolean().optional(),
    appointmentId: z.boolean().optional(),
    patientId: z.boolean().optional(),
    npiProviderId: z.boolean().optional(),
    procedureCode: z.boolean().optional(),
    procedureLabel: z.boolean().optional(),
    fee: z.boolean().optional(),
    category: z.boolean().optional(),
    toothNumber: z.boolean().optional(),
    toothSurface: z.boolean().optional(),
    oralCavityArea: z.boolean().optional(),
    source: z.boolean().optional(),
    comboKey: z.boolean().optional(),
    createdAt: z.boolean().optional(),
    appointment: z.boolean().optional(),
    patient: z.boolean().optional(),
    npiProvider: z.boolean().optional()
  }).strict();

export const AppointmentProcedureFindFirstSchema: z.ZodType<Prisma.AppointmentProcedureFindFirstArgs> = z.object({ select: AppointmentProcedureFindFirstSelectSchema.optional(), include: z.lazy(() => AppointmentProcedureIncludeObjectSchema.optional()), orderBy: z.union([AppointmentProcedureOrderByWithRelationInputObjectSchema, AppointmentProcedureOrderByWithRelationInputObjectSchema.array()]).optional(), where: AppointmentProcedureWhereInputObjectSchema.optional(), cursor: AppointmentProcedureWhereUniqueInputObjectSchema.optional(), take: z.number().optional(), skip: z.number().optional(), distinct: z.union([AppointmentProcedureScalarFieldEnumSchema, AppointmentProcedureScalarFieldEnumSchema.array()]).optional() }).strict() as unknown as z.ZodType<Prisma.AppointmentProcedureFindFirstArgs>;

export const AppointmentProcedureFindFirstZodSchema = z.object({ select: AppointmentProcedureFindFirstSelectSchema.optional(), include: z.lazy(() => AppointmentProcedureIncludeObjectSchema.optional()), orderBy: z.union([AppointmentProcedureOrderByWithRelationInputObjectSchema, AppointmentProcedureOrderByWithRelationInputObjectSchema.array()]).optional(), where: AppointmentProcedureWhereInputObjectSchema.optional(), cursor: AppointmentProcedureWhereUniqueInputObjectSchema.optional(), take: z.number().optional(), skip: z.number().optional(), distinct: z.union([AppointmentProcedureScalarFieldEnumSchema, AppointmentProcedureScalarFieldEnumSchema.array()]).optional() }).strict();