import type { Prisma } from '../../generated/prisma';
import * as z from 'zod';
import { InsuranceContactIncludeObjectSchema as InsuranceContactIncludeObjectSchema } from './objects/InsuranceContactInclude.schema';
import { InsuranceContactOrderByWithRelationInputObjectSchema as InsuranceContactOrderByWithRelationInputObjectSchema } from './objects/InsuranceContactOrderByWithRelationInput.schema';
import { InsuranceContactWhereInputObjectSchema as InsuranceContactWhereInputObjectSchema } from './objects/InsuranceContactWhereInput.schema';
import { InsuranceContactWhereUniqueInputObjectSchema as InsuranceContactWhereUniqueInputObjectSchema } from './objects/InsuranceContactWhereUniqueInput.schema';
import { InsuranceContactScalarFieldEnumSchema } from './enums/InsuranceContactScalarFieldEnum.schema';

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

export const InsuranceContactFindFirstOrThrowSelectSchema: z.ZodType<Prisma.InsuranceContactSelect> = z.object({
    id: z.boolean().optional(),
    userId: z.boolean().optional(),
    name: z.boolean().optional(),
    phoneNumber: z.boolean().optional(),
    createdAt: z.boolean().optional(),
    user: z.boolean().optional()
  }).strict() as unknown as z.ZodType<Prisma.InsuranceContactSelect>;

export const InsuranceContactFindFirstOrThrowSelectZodSchema = z.object({
    id: z.boolean().optional(),
    userId: z.boolean().optional(),
    name: z.boolean().optional(),
    phoneNumber: z.boolean().optional(),
    createdAt: z.boolean().optional(),
    user: z.boolean().optional()
  }).strict();

export const InsuranceContactFindFirstOrThrowSchema: z.ZodType<Prisma.InsuranceContactFindFirstOrThrowArgs> = z.object({ select: InsuranceContactFindFirstOrThrowSelectSchema.optional(), include: z.lazy(() => InsuranceContactIncludeObjectSchema.optional()), orderBy: z.union([InsuranceContactOrderByWithRelationInputObjectSchema, InsuranceContactOrderByWithRelationInputObjectSchema.array()]).optional(), where: InsuranceContactWhereInputObjectSchema.optional(), cursor: InsuranceContactWhereUniqueInputObjectSchema.optional(), take: z.number().optional(), skip: z.number().optional(), distinct: z.union([InsuranceContactScalarFieldEnumSchema, InsuranceContactScalarFieldEnumSchema.array()]).optional() }).strict() as unknown as z.ZodType<Prisma.InsuranceContactFindFirstOrThrowArgs>;

export const InsuranceContactFindFirstOrThrowZodSchema = z.object({ select: InsuranceContactFindFirstOrThrowSelectSchema.optional(), include: z.lazy(() => InsuranceContactIncludeObjectSchema.optional()), orderBy: z.union([InsuranceContactOrderByWithRelationInputObjectSchema, InsuranceContactOrderByWithRelationInputObjectSchema.array()]).optional(), where: InsuranceContactWhereInputObjectSchema.optional(), cursor: InsuranceContactWhereUniqueInputObjectSchema.optional(), take: z.number().optional(), skip: z.number().optional(), distinct: z.union([InsuranceContactScalarFieldEnumSchema, InsuranceContactScalarFieldEnumSchema.array()]).optional() }).strict();