import type { Prisma } from '../../generated/prisma';
import * as z from 'zod';
import { ClaimIncludeObjectSchema as ClaimIncludeObjectSchema } from './objects/ClaimInclude.schema';
import { ClaimOrderByWithRelationInputObjectSchema as ClaimOrderByWithRelationInputObjectSchema } from './objects/ClaimOrderByWithRelationInput.schema';
import { ClaimWhereInputObjectSchema as ClaimWhereInputObjectSchema } from './objects/ClaimWhereInput.schema';
import { ClaimWhereUniqueInputObjectSchema as ClaimWhereUniqueInputObjectSchema } from './objects/ClaimWhereUniqueInput.schema';
import { ClaimScalarFieldEnumSchema } from './enums/ClaimScalarFieldEnum.schema';

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

export const ClaimFindManySelectSchema: z.ZodType<Prisma.ClaimSelect> = z.object({
    id: z.boolean().optional(),
    patientId: z.boolean().optional(),
    appointmentId: z.boolean().optional(),
    userId: z.boolean().optional(),
    staffId: z.boolean().optional(),
    patientName: z.boolean().optional(),
    memberId: z.boolean().optional(),
    dateOfBirth: z.boolean().optional(),
    remarks: z.boolean().optional(),
    missingTeethStatus: z.boolean().optional(),
    missingTeeth: z.boolean().optional(),
    serviceDate: z.boolean().optional(),
    insuranceProvider: z.boolean().optional(),
    createdAt: z.boolean().optional(),
    updatedAt: z.boolean().optional(),
    status: z.boolean().optional(),
    claimNumber: z.boolean().optional(),
    preAuthNumber: z.boolean().optional(),
    npiProviderId: z.boolean().optional(),
    patient: z.boolean().optional(),
    appointment: z.boolean().optional(),
    user: z.boolean().optional(),
    staff: z.boolean().optional(),
    npiProvider: z.boolean().optional(),
    serviceLines: z.boolean().optional(),
    claimFiles: z.boolean().optional(),
    payment: z.boolean().optional(),
    _count: z.boolean().optional()
  }).strict() as unknown as z.ZodType<Prisma.ClaimSelect>;

export const ClaimFindManySelectZodSchema = z.object({
    id: z.boolean().optional(),
    patientId: z.boolean().optional(),
    appointmentId: z.boolean().optional(),
    userId: z.boolean().optional(),
    staffId: z.boolean().optional(),
    patientName: z.boolean().optional(),
    memberId: z.boolean().optional(),
    dateOfBirth: z.boolean().optional(),
    remarks: z.boolean().optional(),
    missingTeethStatus: z.boolean().optional(),
    missingTeeth: z.boolean().optional(),
    serviceDate: z.boolean().optional(),
    insuranceProvider: z.boolean().optional(),
    createdAt: z.boolean().optional(),
    updatedAt: z.boolean().optional(),
    status: z.boolean().optional(),
    claimNumber: z.boolean().optional(),
    preAuthNumber: z.boolean().optional(),
    npiProviderId: z.boolean().optional(),
    patient: z.boolean().optional(),
    appointment: z.boolean().optional(),
    user: z.boolean().optional(),
    staff: z.boolean().optional(),
    npiProvider: z.boolean().optional(),
    serviceLines: z.boolean().optional(),
    claimFiles: z.boolean().optional(),
    payment: z.boolean().optional(),
    _count: z.boolean().optional()
  }).strict();

export const ClaimFindManySchema: z.ZodType<Prisma.ClaimFindManyArgs> = z.object({ select: ClaimFindManySelectSchema.optional(), include: z.lazy(() => ClaimIncludeObjectSchema.optional()), orderBy: z.union([ClaimOrderByWithRelationInputObjectSchema, ClaimOrderByWithRelationInputObjectSchema.array()]).optional(), where: ClaimWhereInputObjectSchema.optional(), cursor: ClaimWhereUniqueInputObjectSchema.optional(), take: z.number().optional(), skip: z.number().optional(), distinct: z.union([ClaimScalarFieldEnumSchema, ClaimScalarFieldEnumSchema.array()]).optional() }).strict() as unknown as z.ZodType<Prisma.ClaimFindManyArgs>;

export const ClaimFindManyZodSchema = z.object({ select: ClaimFindManySelectSchema.optional(), include: z.lazy(() => ClaimIncludeObjectSchema.optional()), orderBy: z.union([ClaimOrderByWithRelationInputObjectSchema, ClaimOrderByWithRelationInputObjectSchema.array()]).optional(), where: ClaimWhereInputObjectSchema.optional(), cursor: ClaimWhereUniqueInputObjectSchema.optional(), take: z.number().optional(), skip: z.number().optional(), distinct: z.union([ClaimScalarFieldEnumSchema, ClaimScalarFieldEnumSchema.array()]).optional() }).strict();