import type { Prisma } from '../../generated/prisma';
import * as z from 'zod';
import { ServiceLineIncludeObjectSchema as ServiceLineIncludeObjectSchema } from './objects/ServiceLineInclude.schema';
import { ServiceLineOrderByWithRelationInputObjectSchema as ServiceLineOrderByWithRelationInputObjectSchema } from './objects/ServiceLineOrderByWithRelationInput.schema';
import { ServiceLineWhereInputObjectSchema as ServiceLineWhereInputObjectSchema } from './objects/ServiceLineWhereInput.schema';
import { ServiceLineWhereUniqueInputObjectSchema as ServiceLineWhereUniqueInputObjectSchema } from './objects/ServiceLineWhereUniqueInput.schema';
import { ServiceLineScalarFieldEnumSchema } from './enums/ServiceLineScalarFieldEnum.schema';

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

export const ServiceLineFindFirstSelectSchema: z.ZodType<Prisma.ServiceLineSelect> = z.object({
    id: z.boolean().optional(),
    claimId: z.boolean().optional(),
    paymentId: z.boolean().optional(),
    procedureCode: z.boolean().optional(),
    procedureDate: z.boolean().optional(),
    quad: z.boolean().optional(),
    arch: z.boolean().optional(),
    toothNumber: z.boolean().optional(),
    toothSurface: z.boolean().optional(),
    icn: z.boolean().optional(),
    paidCode: z.boolean().optional(),
    allowedAmount: z.boolean().optional(),
    totalBilled: z.boolean().optional(),
    totalPaid: z.boolean().optional(),
    totalAdjusted: z.boolean().optional(),
    totalDue: z.boolean().optional(),
    status: z.boolean().optional(),
    claim: z.boolean().optional(),
    payment: z.boolean().optional(),
    serviceLineTransactions: z.boolean().optional(),
    _count: z.boolean().optional()
  }).strict() as unknown as z.ZodType<Prisma.ServiceLineSelect>;

export const ServiceLineFindFirstSelectZodSchema = z.object({
    id: z.boolean().optional(),
    claimId: z.boolean().optional(),
    paymentId: z.boolean().optional(),
    procedureCode: z.boolean().optional(),
    procedureDate: z.boolean().optional(),
    quad: z.boolean().optional(),
    arch: z.boolean().optional(),
    toothNumber: z.boolean().optional(),
    toothSurface: z.boolean().optional(),
    icn: z.boolean().optional(),
    paidCode: z.boolean().optional(),
    allowedAmount: z.boolean().optional(),
    totalBilled: z.boolean().optional(),
    totalPaid: z.boolean().optional(),
    totalAdjusted: z.boolean().optional(),
    totalDue: z.boolean().optional(),
    status: z.boolean().optional(),
    claim: z.boolean().optional(),
    payment: z.boolean().optional(),
    serviceLineTransactions: z.boolean().optional(),
    _count: z.boolean().optional()
  }).strict();

export const ServiceLineFindFirstSchema: z.ZodType<Prisma.ServiceLineFindFirstArgs> = z.object({ select: ServiceLineFindFirstSelectSchema.optional(), include: z.lazy(() => ServiceLineIncludeObjectSchema.optional()), orderBy: z.union([ServiceLineOrderByWithRelationInputObjectSchema, ServiceLineOrderByWithRelationInputObjectSchema.array()]).optional(), where: ServiceLineWhereInputObjectSchema.optional(), cursor: ServiceLineWhereUniqueInputObjectSchema.optional(), take: z.number().optional(), skip: z.number().optional(), distinct: z.union([ServiceLineScalarFieldEnumSchema, ServiceLineScalarFieldEnumSchema.array()]).optional() }).strict() as unknown as z.ZodType<Prisma.ServiceLineFindFirstArgs>;

export const ServiceLineFindFirstZodSchema = z.object({ select: ServiceLineFindFirstSelectSchema.optional(), include: z.lazy(() => ServiceLineIncludeObjectSchema.optional()), orderBy: z.union([ServiceLineOrderByWithRelationInputObjectSchema, ServiceLineOrderByWithRelationInputObjectSchema.array()]).optional(), where: ServiceLineWhereInputObjectSchema.optional(), cursor: ServiceLineWhereUniqueInputObjectSchema.optional(), take: z.number().optional(), skip: z.number().optional(), distinct: z.union([ServiceLineScalarFieldEnumSchema, ServiceLineScalarFieldEnumSchema.array()]).optional() }).strict();