import type { Prisma } from '../../generated/prisma';
import * as z from 'zod';
import { ServiceLineTransactionIncludeObjectSchema as ServiceLineTransactionIncludeObjectSchema } from './objects/ServiceLineTransactionInclude.schema';
import { ServiceLineTransactionOrderByWithRelationInputObjectSchema as ServiceLineTransactionOrderByWithRelationInputObjectSchema } from './objects/ServiceLineTransactionOrderByWithRelationInput.schema';
import { ServiceLineTransactionWhereInputObjectSchema as ServiceLineTransactionWhereInputObjectSchema } from './objects/ServiceLineTransactionWhereInput.schema';
import { ServiceLineTransactionWhereUniqueInputObjectSchema as ServiceLineTransactionWhereUniqueInputObjectSchema } from './objects/ServiceLineTransactionWhereUniqueInput.schema';
import { ServiceLineTransactionScalarFieldEnumSchema } from './enums/ServiceLineTransactionScalarFieldEnum.schema';

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

export const ServiceLineTransactionFindFirstOrThrowSelectSchema: z.ZodType<Prisma.ServiceLineTransactionSelect> = z.object({
    id: z.boolean().optional(),
    paymentId: z.boolean().optional(),
    serviceLineId: z.boolean().optional(),
    transactionId: z.boolean().optional(),
    paidAmount: z.boolean().optional(),
    adjustedAmount: z.boolean().optional(),
    method: z.boolean().optional(),
    receivedDate: z.boolean().optional(),
    payerName: z.boolean().optional(),
    notes: z.boolean().optional(),
    createdAt: z.boolean().optional(),
    payment: z.boolean().optional(),
    serviceLine: z.boolean().optional()
  }).strict() as unknown as z.ZodType<Prisma.ServiceLineTransactionSelect>;

export const ServiceLineTransactionFindFirstOrThrowSelectZodSchema = z.object({
    id: z.boolean().optional(),
    paymentId: z.boolean().optional(),
    serviceLineId: z.boolean().optional(),
    transactionId: z.boolean().optional(),
    paidAmount: z.boolean().optional(),
    adjustedAmount: z.boolean().optional(),
    method: z.boolean().optional(),
    receivedDate: z.boolean().optional(),
    payerName: z.boolean().optional(),
    notes: z.boolean().optional(),
    createdAt: z.boolean().optional(),
    payment: z.boolean().optional(),
    serviceLine: z.boolean().optional()
  }).strict();

export const ServiceLineTransactionFindFirstOrThrowSchema: z.ZodType<Prisma.ServiceLineTransactionFindFirstOrThrowArgs> = z.object({ select: ServiceLineTransactionFindFirstOrThrowSelectSchema.optional(), include: z.lazy(() => ServiceLineTransactionIncludeObjectSchema.optional()), orderBy: z.union([ServiceLineTransactionOrderByWithRelationInputObjectSchema, ServiceLineTransactionOrderByWithRelationInputObjectSchema.array()]).optional(), where: ServiceLineTransactionWhereInputObjectSchema.optional(), cursor: ServiceLineTransactionWhereUniqueInputObjectSchema.optional(), take: z.number().optional(), skip: z.number().optional(), distinct: z.union([ServiceLineTransactionScalarFieldEnumSchema, ServiceLineTransactionScalarFieldEnumSchema.array()]).optional() }).strict() as unknown as z.ZodType<Prisma.ServiceLineTransactionFindFirstOrThrowArgs>;

export const ServiceLineTransactionFindFirstOrThrowZodSchema = z.object({ select: ServiceLineTransactionFindFirstOrThrowSelectSchema.optional(), include: z.lazy(() => ServiceLineTransactionIncludeObjectSchema.optional()), orderBy: z.union([ServiceLineTransactionOrderByWithRelationInputObjectSchema, ServiceLineTransactionOrderByWithRelationInputObjectSchema.array()]).optional(), where: ServiceLineTransactionWhereInputObjectSchema.optional(), cursor: ServiceLineTransactionWhereUniqueInputObjectSchema.optional(), take: z.number().optional(), skip: z.number().optional(), distinct: z.union([ServiceLineTransactionScalarFieldEnumSchema, ServiceLineTransactionScalarFieldEnumSchema.array()]).optional() }).strict();