import type { Prisma } from '../../generated/prisma';
import * as z from 'zod';
import { PaymentIncludeObjectSchema as PaymentIncludeObjectSchema } from './objects/PaymentInclude.schema';
import { PaymentOrderByWithRelationInputObjectSchema as PaymentOrderByWithRelationInputObjectSchema } from './objects/PaymentOrderByWithRelationInput.schema';
import { PaymentWhereInputObjectSchema as PaymentWhereInputObjectSchema } from './objects/PaymentWhereInput.schema';
import { PaymentWhereUniqueInputObjectSchema as PaymentWhereUniqueInputObjectSchema } from './objects/PaymentWhereUniqueInput.schema';
import { PaymentScalarFieldEnumSchema } from './enums/PaymentScalarFieldEnum.schema';

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

export const PaymentFindFirstSelectSchema: z.ZodType<Prisma.PaymentSelect> = z.object({
    id: z.boolean().optional(),
    claimId: z.boolean().optional(),
    patientId: z.boolean().optional(),
    userId: z.boolean().optional(),
    updatedById: z.boolean().optional(),
    npiProviderId: z.boolean().optional(),
    totalBilled: z.boolean().optional(),
    totalPaid: z.boolean().optional(),
    totalAdjusted: z.boolean().optional(),
    totalDue: z.boolean().optional(),
    mhPaidAmount: z.boolean().optional(),
    copayment: z.boolean().optional(),
    adjustment: z.boolean().optional(),
    status: z.boolean().optional(),
    notes: z.boolean().optional(),
    icn: z.boolean().optional(),
    createdAt: z.boolean().optional(),
    updatedAt: z.boolean().optional(),
    claim: z.boolean().optional(),
    patient: z.boolean().optional(),
    updatedBy: z.boolean().optional(),
    npiProvider: z.boolean().optional(),
    serviceLineTransactions: z.boolean().optional(),
    serviceLines: z.boolean().optional(),
    commissionBatchItems: z.boolean().optional(),
    _count: z.boolean().optional()
  }).strict() as unknown as z.ZodType<Prisma.PaymentSelect>;

export const PaymentFindFirstSelectZodSchema = z.object({
    id: z.boolean().optional(),
    claimId: z.boolean().optional(),
    patientId: z.boolean().optional(),
    userId: z.boolean().optional(),
    updatedById: z.boolean().optional(),
    npiProviderId: z.boolean().optional(),
    totalBilled: z.boolean().optional(),
    totalPaid: z.boolean().optional(),
    totalAdjusted: z.boolean().optional(),
    totalDue: z.boolean().optional(),
    mhPaidAmount: z.boolean().optional(),
    copayment: z.boolean().optional(),
    adjustment: z.boolean().optional(),
    status: z.boolean().optional(),
    notes: z.boolean().optional(),
    icn: z.boolean().optional(),
    createdAt: z.boolean().optional(),
    updatedAt: z.boolean().optional(),
    claim: z.boolean().optional(),
    patient: z.boolean().optional(),
    updatedBy: z.boolean().optional(),
    npiProvider: z.boolean().optional(),
    serviceLineTransactions: z.boolean().optional(),
    serviceLines: z.boolean().optional(),
    commissionBatchItems: z.boolean().optional(),
    _count: z.boolean().optional()
  }).strict();

export const PaymentFindFirstSchema: z.ZodType<Prisma.PaymentFindFirstArgs> = z.object({ select: PaymentFindFirstSelectSchema.optional(), include: z.lazy(() => PaymentIncludeObjectSchema.optional()), orderBy: z.union([PaymentOrderByWithRelationInputObjectSchema, PaymentOrderByWithRelationInputObjectSchema.array()]).optional(), where: PaymentWhereInputObjectSchema.optional(), cursor: PaymentWhereUniqueInputObjectSchema.optional(), take: z.number().optional(), skip: z.number().optional(), distinct: z.union([PaymentScalarFieldEnumSchema, PaymentScalarFieldEnumSchema.array()]).optional() }).strict() as unknown as z.ZodType<Prisma.PaymentFindFirstArgs>;

export const PaymentFindFirstZodSchema = z.object({ select: PaymentFindFirstSelectSchema.optional(), include: z.lazy(() => PaymentIncludeObjectSchema.optional()), orderBy: z.union([PaymentOrderByWithRelationInputObjectSchema, PaymentOrderByWithRelationInputObjectSchema.array()]).optional(), where: PaymentWhereInputObjectSchema.optional(), cursor: PaymentWhereUniqueInputObjectSchema.optional(), take: z.number().optional(), skip: z.number().optional(), distinct: z.union([PaymentScalarFieldEnumSchema, PaymentScalarFieldEnumSchema.array()]).optional() }).strict();